2014-05-19 4 views
-4
DELETE f.* FROM FILE f, topic t, course c WHERE f.topic_id = t.topic_id AND t.course_id = 28; 

DELETE t.* FROM topic t WHERE t.course_id = 28; 

DELETE c.* FROM course c WHERE c.course_id = 28; 

EDIT: Оператор хочет знать (как указано в комментариях, разъясняющих вопрос), что он хотел бы удалить строки во всех трех таблицах, где они имеют идентификатор ... по существу, каскадное удаление по трем таблицам.как каскад удалять строки из трех таблиц в mysql путем ссылки на отношения

+3

Объясните свою проблему, пожалуйста. –

+3

Итак, в чем вопрос? не понял. – Rahul

+0

Добро пожаловать в SO! если у вас есть ограничения, установленные между таблицами, вы должны иметь возможность выполнять каскадное удаление. Проверь это. http://stackoverflow.com/questions/2914936/mysql-foreign-key-constraints-cascade-delete – markg

ответ

1
DELETE f.*, t.*, c.* FROM file f 
JOIN topic t ON t.topic_id = f.topic_id 
JOIN course c ON c.course_id = f.topic_id 
WHERE f.topic_id = 28 

Это соответствует синтаксису многотабличные в MySQL documentation. В нем говорится:

Для синтаксиса с несколькими таблицами DELETE удаляет из каждого tbl_name строки, удовлетворяющие условиям.

Другой путь вы можете сделать это, чтобы объявить столбцы как внешние ключи родительской таблицы (я не уверен, что родитель/ребенок соотношение в таблицах), а также использовать ON DELETE CASCADE опции к внешние ключи. Затем вы можете просто удалить строку из родительской таблицы, а связанные строки будут автоматически удалены из дочерних таблиц. Обратите внимание, что для принудительного использования внешнего ключа требуется использовать InnoDB, а не MyISAM, как механизм базы данных.

+0

это не работает – user3653924

+0

я хочу сделать что-то вроде этого bt not woking .. DELETE f. *, T. *, C. * FROM course c, topic t, FILE f WHERE c.course_id = 26 AND (t.course_id = c.course_id AND (f.topic_id = t.topic_id)) – user3653924

+0

Я думаю, что это должно сработать. Пожалуйста, сделайте sqlfiddle, демонстрирующий проблему. – Barmar

 Смежные вопросы

  • Нет связанных вопросов^_^