Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

delete con left join

Estas en el tema de delete con left join en el foro de Mysql en Foros del Web. Hola, verán ustedes esta sentencia me funciona a medias, me explico: $delete="DELETE c, a, r, s1, s2, su FROM articulos AS a LEFT JOIN categoria ...
  #1 (permalink)  
Antiguo 16/06/2010, 01:36
 
Fecha de Ingreso: agosto-2009
Mensajes: 80
Antigüedad: 15 años, 3 meses
Puntos: 0
delete con left join

Hola, verán ustedes esta sentencia me funciona a medias, me explico:

$delete="DELETE c, a, r, s1, s2, su
FROM articulos AS a
LEFT JOIN categoria AS c ON c.id_categoria='".$delete_categoria."'
LEFT JOIN relacion AS r ON c.id_categoria=r.id_categoria AND r.id_articulo=a.id_articulo
LEFT JOIN subcategoria1 AS s1 ON c.id_categoria=s1.id_categoria
LEFT JOIN subcategoria2 AS s2 ON c.id_categoria=s2.id_categoria
LEFT JOIN sub1_sub2 AS su ON c.id_categoria=su.id_categoria";

Solo se ejecuta bien si hay registros que coincidan en r.id_articulo=a.id_articulo. Si no existe coincidencia en estos registros, no me delete en las demas tablas aunque coincidan con id_categoria.

Lo que pretendo es que me borre todo lo que pille con estos registros siempre que exista en la tabla, pero que si no existe en una tabla me lo borre en las demás.

Gracias
  #2 (permalink)  
Antiguo 16/06/2010, 03:58
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: delete con left join

En un caso así te conviene usar tablas InnoDB y darles a las FK la cláusula ON DELETE CASCADE...
Te ahorrarías problemas.
Además, si lo que quieres es borrar vaciar las tablas, una serie de
Código MySQL:
Ver original
  1. TRUNCATE tabla;
sería más que suficiente.
Finalmente, es posible que el problema se origine en el orden de borrado, ya que si la dependencia de las FK no se respeta, no te dejará eliminar los registros. Esto lo menciono porque la dependencia parece ser A<-SU<-S1<-S2<-C<-R, y ese sería el orden en que deberían estar las eliminaciones.
Habría que probar.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: delete, join, left
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:07.