Общие > Базы данных
Запрос для поиска отсутствующих в др. таблице значений
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;
Так?
Навигация
Перейти к полной версии