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

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

SQL-запрос на удаление записей [D6, MS Access 2000]


Nikolai_S ©   (2003-11-28 10:09:00) 

Доброго времени суток!

У меня такой вопрос. Как составить SQL-запрос на удаление записей из заданной таблицы в базе данных MS Access 2000, если необходимо наложить на поля в других связанных таблицах через JOIN?

Пишу такой запрос (нужно удалить записи из табицы T1):

DELETE T1.*
FROM T1 LEFT JOIN T2 ON (T1.F1=T2.F1) AND (T1.F2=T2.F2)
WHERE T2.F1 IS NULL


Выдается ошибка "Невозможно удаление записей из указанных таблиц".

Вообще данный запрос должен удалять те записи из T1, у которых нет записей в T2 с совпадающими значениями в полях F1 и F2


asp   (2003-11-28 10:25:00) [1]

Может,
DELETE FROM TABLE1 T1
WHERE NOT(EXISTS(SELECT T2.F1 FROM TABLE2 T2 WHERE T2.F1 = T1.F1 AND T2.F2 = T1.F2))


Johnmen   (2003-11-28 10:23:00) [2]

Примерно так

DELETE FROM T1
WHERE EXIST (SELECT * FROM T1
LEFT JOIN T2 ON (T1.F1=T2.F1) AND (T1.F2=T2.F2)
WHERE T2.F1 IS NULL)


Alex_Bredin   (2003-11-28 10:20:00) [3]


> Вообще данный запрос должен удалять те записи из T1, у которых
> нет записей в T2 с совпадающими значениями в полях F1 и
> F2

в лоб

DELETE FROM T1
WHERE (T1.F1 NOT IN(SELECT F1 FROM T2)) AND
(T1.F2 NOT IN(SELECT F2 FROM T2))

тока очень долго это..


Наверх

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