Удаление записей из нескольких таблиц по одному условию

ran

Новичок
Удаление записей из нескольких таблиц по одному условию

Добрый день.
У меня есть 2 таблицы практически одинаковой структуры user_relation, event_relation.
user_relation:
id
user_id
relation_id
и таблица event_relation
id
event_id
name
При удалении записи из relation нужно удалить все связанные с ними в таблицах user_relation, event_relation.
Использую такой запрос
DELETE user_relation, event_relation FROM user_relation, event_relation
WHERE
user_relation.relation_id = 2
AND
event_relation.relation_id = 2
Если в обеих таблицах есть записи с relation_id = 2, то удаляет все без проблем, иначе, если одна из таблиц не содержит ни одной записи с relation_id = 2, то и удалять в ней ничего, но при этом не удаляются записи из второй( в которой есть записи с relation_id = 2).
Использовать ON DELETE - CASCADE не могу, т.к. таблицы MyIsam.

Возможно ли удалить записи из нескольким таблиц, если не все из них удовлетворяют условию удаления одним запросом, и если можно, то где про это можно прочитать?
Если нет, то можно и несколькими, но уже 2й раз сталкиваюсь с такой проблемой и интересно, есть ли решение, кроме как использование FK или удаление несколькими запросами.
 

ran

Новичок
Автор оригинала: akd
возможно.
почитать можно (сюрприз!) в мануале

http://dev.mysql.com/doc/refman/5.0/en/delete.html
akd, может не совсем ясно объяснил, вот конкретный пример:
user_relation: event_relation:
id relation_id id relation_id
1 3 1 4
2 3 2 2
3 3 3 2

при попытке удалить запись с relation_id = 2 - удаление не происходит из event_relation.
SQL:
Код:
DELETE  user_relation, event_relation 
     FROM  relation, user_relation, event_relation
WHERE
     user_relation.relation_id = 2
AND
     event_relation.relation_id = 2
пробовал составлять и с использование USING, но это тоже самое, что и в первом варианте.
Версия mysql 5.0.27-community-log, ОС - WinXP.
 

akd

dive now, work later
Команда форума
ran, это все потому, что читать нужно ВНИМАТЕЛЬНО и ПОЛНОСТЬЮ. понимая, что читаешь не донцову, поэтому детали ВАЖНЫ.

подсказка: LEFT JOIN
 

ran

Новичок
Автор оригинала: akd
подсказка: LEFT JOIN
akd, спасибо за подсказку, получилось :cool:
Код:
DELETE  user_relation, event_relation 
FROM relation
LEFT JOIN user_relation ON user_relation.relation_id = relation.id
LEFT JOIN event_relation ON event_relation.relation_id = relation.id
WHERE
     relation.id = 2
 

Эдди

Новичок
У меня при использовании LEFT JOIN удаляются записи только из таблицы tb1
Буду пробовать INNER JOIN. Но это не совсем правильно, думаю...

Момент. Кажется в коде ошибка... Пардон

Все нормально работает.
Извиняюсь перед достопочтенной публикой.
 
Сверху