Forum Webscript.Ru
Общие => Базы данных => Тема начата: puh от 28 Февраля 2002, 16:02:57
-
Вот понял, что попал :(. С SQL знаком 1,5 дня.
Есть 2 таблицы - одна большая, вторая маленькая, содержащая некоторые данные первой. Нужно получить из первой все ОТСУТСТВУЮЩИЕ во второй таблице значения.
Что-то вроде "отнять одну таблицу от другой"
Поможете?
-
Ну что-то вроде этого: 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 |
+----+-------+
так покатит?
-
в меньшей таблице нет ID, т.е. данные не проиндексированы. Есть ли возможность сравнить несколько полей (name и surname например)
Такой синтаксис:
SELECT *
FROM [Viss tavai majai] LEFT JOIN [Moj Dom] ON [Viss tavai majai].[Firma] =[Moj Dom].[Firma];
надо как-то дополнить...
-
Есть ли возможность сравнить несколько полей (name и surname например)
ты то можешь вместо using(id) использовать on parent.name=child.name или что-то в этом роде,
но т.к. значения этих полей могут быть не уникальными, то гарантии, что ты получишь все записи, котторые тебе нужны нет :(
-
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;
Так?
-
Этим же способом, просто отсортировал и удалил ненужные данные.
Большое спасибо, fidget! Большое спасибо, Chs!
К тому же это мой 100 постинг! УРА!:appl: