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

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

SQL запрос c not in [D7, Firebird 2.0]


MZ ©   (2007-08-27 11:11:00) 

уважаемые мастера! Необходимо составиь запрос который отбирает записи из таблицы Table1 у которых совокупность 2 полей (поля индексированы) не равна
совокупности этих полей в Table2. Сделал так

SELECT*
FROM TABLE1
WHERE FIELD1||FIELD2 NOT IN
(SELECT FIELD1||FIELD2
FROM TABLE2)

Как-то это коряво.... И поиск соответственно не индексирован...


Johnmen   (2007-08-27 11:43:00) [1]

Классическое решение:
SELECT T1.* FROM TABLE1 T1
LEFT JOIN TABLE1 T2 WHERE (T1.FIELD1=T2.FIELD1) AND (T1.FIELD2=T2.FIELD2)
WHERE T2.FIELD1 IS NULL


MZ   (2007-08-27 11:32:00) [2]


> turbouser ©   (27.08.07 11:21) [1]
>
> SELECT*
> FROM TABLE1 t1
> WHERE NOT EXISTS
> (SELECT * FROM TABLE2 t2 WHERE t2.FIELD1=t1.FIELD1 and t2.
> FIELD2=t1.FIELD2)


Забыл про Exist :-(  спасибо, работает


Вася Правильный   (2007-08-27 11:25:00) [3]


>  WHERE t2.FIELD1||t2.FIELD2 and t1.FIELD1||t1.FIELD2

это чё за конструкция?


turbouser   (2007-08-27 11:24:00) [4]

(SELECT * FROM TABLE2 t2 WHERE t2.FIELD1||t2.FIELD2 = t1.FIELD1||t1.FIELD2)


turbouser   (2007-08-27 11:21:00) [5]

SELECT*
FROM TABLE1 t1
WHERE NOT EXISTS
(SELECT * FROM TABLE2 t2 WHERE t2.FIELD1=t1.FIELD1 and t2.FIELD2=t1.FIELD2)

или
(SELECT * FROM TABLE2 t2 WHERE t2.FIELD1||t2.FIELD2 and t1.FIELD1||t1.FIELD2)
- по обстоятельствам


Наверх

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