Estoy intentando eliminar de algunas tablas a la vez. Investigué un poco y se me ocurrió esto
DELETE FROM `pets` p,
`pets_activities` pa
WHERE p.`order` > :order
AND p.`pet_id` = :pet_id
AND pa.`id` = p.`pet_id`
Sin embargo, recibo este error.
Database_Exception no detectado [1064]: tiene un error en la sintaxis SQL; consulte el manual que corresponde a la versión de su servidor MySQL para conocer la sintaxis correcta para usar cerca de 'p,
pets_activitiespa ...
Nunca antes había hecho una eliminación de tablas cruzadas, ¡así que no tengo experiencia y estoy atascado por ahora!
¿Qué estoy haciendo mal?

SELECTtoma igualmente larga?Dado que esto parece ser una relación simple padre / hijo entre
petsypets_activities, sería mejor crear su restricción de clave externa con una cascada de eliminación.De esa manera, cuando
petsse elimina una fila, laspets_activitiesfilas asociadas a ella también se eliminan automáticamente.Entonces su consulta se vuelve simple:
fuente
paes un hijo propio depdebido alid/pet_idmapeo.Utilizar este
o
fuente
No tengo una base de datos mysql para probar en este momento, pero ¿ha intentado especificar qué eliminar antes de la cláusula from? Por ejemplo:
Creo que la sintaxis que usó se limita a las versiones más recientes de mysql.
fuente
La sintaxis me parece correcta ... intente cambiarla para usar
INNER JOIN...Eche un vistazo a esto .
fuente
Para cualquiera que lea esto en 2017, así es como he hecho algo similar.
Generalmente, para eliminar filas de varias tablas, la sintaxis que sigo se proporciona a continuación. La solución se basa en el supuesto de que existe alguna relación entre las dos tablas.
fuente
Encontré este artículo que le muestra cómo eliminar datos de varias tablas utilizando la declaración MySQL DELETE JOIN con una buena explicación.
fuente