Ver Mensaje Individual
  #2 (permalink)  
Antiguo 06/02/2009, 07:44
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 2 meses
Puntos: 574
Respuesta: Se les ocurre una mejor forma de hacer estos LEFT JOIN?

Código:
DELETE prod_cat.*, 
             prod_color.*, 
             prod_oz.*, 
             prod_size.* 
     FROM productos LEFT JOIN prod_cat Using (id_producto) 
                                LEFT JOIN prod_color Using (id_producto) 
                                LEFT JOIN prod_oz Using (id_producto) 
                                LEFT JOIN prod_size USING (id_producto) 
WHERE productos.id_producto = $prod";
Código:
DELETE FROM  prod_cat WHERE prod_cat.id_producto = $prod";
etc.

Si por separado o definiendo en la relacion la eliminacion en cascada, si puedes eliminar de productos.

Código:
DELETE FROM  productos WHERE productos.id_producto = $prod";
Si tienes definidas las FK y la eliminación en cascada solo tines que eliminar el producto de la tabla principal (productos) y se eliminara de las demás.


Cita:
El problema es que hay lookup tables en los que la columna id_producto no tiene dicho valor, por eso uso el LEFT JOIN en lugar de un INNER JOIN.
Si alguna de las tablas no tiene el campo id_producto dificilmente se te van a relacionar, sea con LEFT JOIN o INNER JOIN. Si lo que no tienen es el valor no te importa puesto que luego no tendrás que borrar nada en ellas.

Quim