Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Нужен 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


Наверх

Титульная страница Поиск, карта сайта Написать письмо