Tema: Deletes
Ver Mensaje Individual
  #8 (permalink)  
Antiguo 30/09/2010, 15:27
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Deletes

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
Código MySQL:
Ver original
  1. DELETE FROM tblcommentstatus  CS INNER JOIN tblstatusservices SS on CS.cabecera_cliente = SS.cabecera_cliente
  2. WHERE SS.idstatusdeservicios = valorBuscado;

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:
Código MySQL:
Ver original
  1. DELETE t1, t2 FROM t1, t2, t3 WHERE t1.id=t2.id AND t2.id=t3.id;
O:
Código MySQL:
Ver original
  1. DELETE FROM t1, t2 USING t1, t2, t3 WHERE t1.id=t2.id AND t2.id=t3.id;
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.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)