Я пытаюсь удалить из нескольких таблиц сразу. Я провел немного исследования и придумал это
DELETE FROM `pets` p,
`pets_activities` pa
WHERE p.`order` > :order
AND p.`pet_id` = :pet_id
AND pa.`id` = p.`pet_id`
Однако я получаю эту ошибку
Непойманный Database_Exception [1064]: у Вас есть ошибка в Вашем синтаксисе SQL; проверьте руководство, которое соответствует Вашей серверной версии MySQL для правильного синтаксиса для использования рядом 'p,
pets_activities
pa...
Я никогда не делал кросс-таблицы, удаляют прежде, таким образом, я неопытен и застреваюсь на данный момент!
Что я делаю неправильно?
Поскольку это, похоже, простая связь родитель / потомок между pets
и pets_activities
, вам лучше создать свой внешний ключ ограничение с каскадом удаления.
Таким образом, когда строка pets
удаляется, связанные с ней строки pets_activities
также удаляются автоматически.
Тогда ваш запрос станет простым:
delete from `pets`
where `order` > :order
and `pet_id` = :pet_id
Синтаксис мне кажется правильным ... попробуйте изменить его, чтобы использовать ВНУТРЕННЕЕ СОЕДИНЕНИЕ ...
Взгляните на это: http: //www.electrictoolbox. com / article / mysql / cross-table-delete /
В настоящий момент у меня нет базы данных mysql для тестирования, но пробовали ли вы указать, что нужно удалить, до предложения from? Например:
DELETE p, pa FROM `pets` p,
`pets_activities` pa
WHERE p.`order` > :order
AND p.`pet_id` = :pet_id
AND pa.`id` = p.`pet_id`
Я думаю, что используемый вами синтаксис ограничен более новыми версиями mysql.