2015-02-24 4 views
0

У меня есть 3 таблицы, скажем, a, b, c, и все они имеют столбец с идентификатором. Идентификатор соответствует, когда строки из разных таблиц принадлежат друг другу. Я хочу удалить все записи из таблиц с помощью идентификатора. Я попытался следующие несколько удаления:Multi delete только с одним ограничением

delete from a,b,c from a,b,c where a.id=123; 

Следующая не будет работать

delete from a,b,c from a,b,c where a.id=b.id and b.id=c.id and c.id=123; 

, потому что это не обязательно иметь элемент с, когда есть один в а и Ь для или только в a для заданного id.

ответ

2

Согласно the documentation синтаксис:

delete a,b,c 
from a 
LEFT JOIN b ON a.id = b.id 
LEFT JOIN c ON a.id = c.id 
where a.id=123; 
1

Я бы создать массив и использовать, чтобы назвать таблицы, которые вы хотите удалить из каждого имени таблицы, которая имеет этот идентификатор, который вы ищете. Таким образом, если идентификатор является идентификатором внешнего ключа, у вас будет больше контроля. Запустите это через цикл foreach.

$ Таблица = массив (TableA => а, ID => а), массив (TableB => Ь, ID => б)

$ SQL = "DELETE FROM $ где $ таблицы, где";

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