У меня есть несколько таблиц в MySQL, например, так:
A ---- A_has_B ---- B
(many to many) |
|
C ---- C_has_B-------
(many to many)
Мне нужно удалить строки из B, если:
- Ссылка на удаляемую строку в C_has_B указана C.C_ID
- На удаляемую строку не ссылаются другие идентификаторы C.C_ID в C_has_B
- Строка, подлежащая удалению, также не указана в A_has_B
Я могу получить все строки для удаления, на которые ссылается C.ID, используя:
DELETE * FROM C
JOIN C_has_B
ON(C.C_ID = C_has_B.C_ID)
JOIN B
on(C_has_B.B_ID = B.B_ID)
where C.C_ID = 1;
Я не слишком уверен, как я могу выполнить последние 2 условия. Возможно ли это сделать всего одним запросом?