Общие > Базы данных

Запрос для поиска отсутствующих в др. таблице значений

(1/2) > >>

puh:
Вот понял, что попал :(. С SQL знаком 1,5 дня.
Есть 2 таблицы - одна большая, вторая маленькая, содержащая некоторые данные первой. Нужно получить из первой все ОТСУТСТВУЮЩИЕ во второй таблице значения.
Что-то вроде "отнять одну таблицу от другой"
Поможете?

fidget:
Ну что-то вроде этого: 2 таблицы parent и child
parent:            
+----+-------+
| id | name  |
+----+-------+
|  1 | vita     |
|  2 | egor   |
|  3 | sasha |
|  4 | vitya   |
|  5 | sasha |
|  6 | tolya   |
+----+-------+
child:
+----+-------+
| id | name  |
+----+-------+
|  3 | sasha |
|  4 | vitya |
+----+-------+

выбираем данные:
select parent.id, parent.name from parent left join child using(id) where child.id is null;

получаем результат:
+----+-------+
| id | name  |
+----+-------+
|  1 | vita    |
|  2 | egor  |
|  5 | sasha|
|  6 | tolya  |
+----+-------+

так покатит?

puh:
в меньшей таблице нет ID, т.е. данные не проиндексированы. Есть ли возможность сравнить несколько полей (name и surname например)

Такой синтаксис:

SELECT *
FROM [Viss tavai majai] LEFT JOIN [Moj Dom] ON [Viss tavai majai].[Firma] =[Moj Dom].[Firma];

надо как-то дополнить...

fidget:

--- Цитировать ---Есть ли возможность сравнить несколько полей (name и surname например)
--- Конец цитаты ---


ты то можешь вместо using(id) использовать on parent.name=child.name или что-то в этом роде,
но т.к. значения этих полей могут быть не уникальными, то гарантии, что ты получишь все записи, котторые тебе нужны нет :(

Chs:

--- Цитировать ---SELECT *
FROM [Viss tavai majai] LEFT JOIN [Moj Dom] ON [Viss tavai majai].[Firma] =[Moj Dom].[Firma];

--- Конец цитаты ---

SELECT *
FROM table1 as a LEFT JOIN table2 as b  ON a.Firma=b.Firma and a.Name=b.Name where b.id is null;
Так?

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 
Перейти к полной версии