SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 18.07.2008 20:26:50

talman
Участник
Зарегистрирован: 03.07.2008
Сообщений: 8

Запрос на удаление записей из связанных таблиц.

К примеру, есть две связанные таблицы "марки" и "модели":

mark (id_mark)
model (id_model, id_mark)

Модель ссылается на марку. Допустим, при удалении записей из таблицы mark не удалили связанные записи в таблице model.
Можно ли составить одиночный запрос для удаления записей из таблицы model, которые больше не связаны с mark?

Пытался вот как:

DELETE FROM model WHERE  model.id_mark IN
               (SELECT model.id_mark
                FROM model LEFT JOIN mark ON model.id_mark=mark.id_mark
                WHERE mark.id_mark IS NULL)

Но так mysql ругается.
Спасибо.

Неактивен

 

#2 18.07.2008 20:49:20

Shopen
Гуру
Откуда: Москва
Зарегистрирован: 22.10.2007
Сообщений: 362

Re: Запрос на удаление записей из связанных таблиц.

может так?

Код:

DELETE model FROM model 
LEFT JOIN mark ON model.id_mark = mark.id_mark 
WHERE mark.id_mark IS NULL

только сналача вместо DELETE model FROM напишите SELECT model.*  FROM и убедитесь что выбираются нужные записи (которые будут удалены)

Неактивен

 

#3 18.07.2008 21:06:42

talman
Участник
Зарегистрирован: 03.07.2008
Сообщений: 8

Re: Запрос на удаление записей из связанных таблиц.

Вы правы. Сразу пробывал так, только вот не указал "что" удалять:

DELETE FROM t1 LEFT JOIN t2 ON t1.id=t2.id WHERE t2.id IS NULL;

вместо

DELETE t1 FROM t1 LEFT JOIN t2 ON t1.id=t2.id WHERE t2.id IS NULL;

Спасибо.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson