Cita: No puedes eliminar en una sola consulta 2 tablas tienes que hacer el delete de una y despues el de la otra, una vez que haces ese delete ahora tienes que hacer el siguiente:
Es no es necesariamente cierto. No sé si mencionas alguna restricción específica de algún DBMS, pero en el caso de MySQL sería
Para estas dudas siempre es mejor consultar el
manual de referencia:
Cita: Para la primera sintaxis, sólo los registros coincidentes de las tablas listadas antes de la cláusula FROM se borran.
Para la segunda sintaxis, sólo los registros coincidentes de las tablas listadas en la cláusula FROM (antes de la cláusula USING ) se borran. El efecto es que puede borrar registros para varias tablas al mismo tiempo y tienen tablas adicionales que se usan para buscar:
O:
Estos comandos usan las tres tablas al buscar registros a borrar, pero borrar los registros coincidentes sólo para las tablas t1 y t2.
Los ejemplos anteriores muestran inner joins usando el operador coma, pero comandos DELETE de varias tablas pueden usar cualquier tipo de join permitido por comandos SELECT tales como LEFT JOIN.
Siempre hay que tener en cuenta que si hay FOREEIGN KEYs, la cosa cambia un poco:
Cita: Si usa un comando DELETE de varias tablas incluyendo tablas InnoDB para las que hay restricciones de clave foránea, el optimizador MySQL puede procesar tablas en un orden ditinto del de su relación padre/hijo. En este caso, el comando falla y se deshace. En su lugar, debe borrar de una tabla úncia y confiar en la capacidad de ON DELETE que proporciona InnoDB para hacer que las otras tablas se modifiquen correctamente.