![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Нужен SQL запрос [D5, Paradox]
ak75 © (2003-01-04 13:05:00)Не могу построить запрос, помогите.
Есть таблицы Tbl1 и Tbl2 с полями Id и Name.
Условия такие:
1. все записи из Tbl1 если Tbl1.Id <> Tbl2.Id
2. все записи из Tbl2 если Tbl1.Id <> Tbl2.Id
3. Одинаковые Id в двух таблицах, но без повторов.
passm (2003-01-04 15:07:00) [1]Johnmen © (04.01.03 15:00)> Да, либо просто UNION.
Johnmen (2003-01-04 15:00:00) [2]>passm © (04.01.03 14:55)
Тогда уж :
SELECT TBL1.ID
FROM TBL1
UNION
SELECT TBL2.ID
FROM TBL2
passm (2003-01-04 14:55:00) [3]Результат видется как все ID (FROM TBL1 & TBL2), но без повторов. Иными словами - объединение множеств.
SELECT TBL1.ID
FROM TBL1
UNION ALL
SELECT TBL2.ID
FROM TBL2
WHERE TBL2.ID NOT IN (SELECT TBL1.ID FROM TBL1)
Johnmen (2003-01-04 14:34:00) [4]>Delirium^.Tremens © (04.01.03 14:23)
>Бред какой-то...
Никакого бреда !
Если понимать смысл левого соединения...:)
Delirium^.Tremens (2003-01-04 14:24:00) [5]
> Более того, если взять NOT NULL, то вернет пересекающиеся
> ID
P.S. Хотя это-то как раз и понятно
Delirium^.Tremens (2003-01-04 14:23:00) [6]Johnmen © (04.01.03 14:10)
> Просто предлагаю тебе попробовать :) на LocalSQL.
> Запрос верен на 100%, не зависимо от БД...:)
Бред какой-то, но так и есть. Более того, если взять NOT NULL, то вернет пересекающиеся ID
Johnmen (2003-01-04 14:10:00) [7]>Delirium^.Tremens © (04.01.03 14:02)
Просто предлагаю тебе попробовать :) на LocalSQL.
Запрос верен на 100%, не зависимо от БД...:)
Delirium^.Tremens (2003-01-04 14:02:00) [8]Johnmen © (04.01.03 13:58)
> Так и будет :)))))))))))))))
Если так и будет на LocalSQL, то я в жизни за него не возьмусь. По моему разумению, в нормальной базе, твой запрос вернет пустышку :-)
Johnmen (2003-01-04 13:58:00) [9]>Delirium^.Tremens © (04.01.03 13:55)
Так и будет :)))))))))))))))
Delirium^.Tremens (2003-01-04 13:55:00) [10]Johnmen © (04.01.03 13:39)
> Не понял...Это к чему ?
К тому, что по условию запрос должен вернуть те записи, где они(ID) не равны
Johnmen (2003-01-04 13:39:00) [11]>Delirium^.Tremens © (04.01.03 13:25)
Не понял...Это к чему ?
Delirium^.Tremens (2003-01-04 13:25:00) [12]Johnmen © (04.01.03 13:20)
1. все записи из Tbl1 если Tbl1.Id <>Tbl2.Id
Max Zyuzin (2003-01-04 13:24:00) [13]1.
select * from tbl1
where tbl1.id not in (select tbl2.id from tbl2)
2. поменять местами tbl
3.
select distinct tbl1.* from tbl1, tbl2
where Tbl1.Id = Tbl2.Id
Johnmen (2003-01-04 13:20:00) [14]1.
SELECT * FROM Tbl1
LEFT JOIN Tbl2 ON Tbl1.Id = Tbl2.Id
WHERE Tbl2.Id IS NULL