Seguramente en alguna ocasión nos habremos visto, o nos podemos ver en la situación de borrar de dos tablas un dato, un ejemplo clásico seria el de creo una factura y esta contiene productos, con lo que podríamos tener una tabla de Facturas y otra tabla que fueran detallesFacturas, en la primera guardaríamos los datos generales de la factura y en el la segunda los artículos o lineas que comprondría la factura, pues bien, si borro la factura tengo que borrar también los artículos que estaban en esa factura, y eso tendría que poder hacerlo con una sola consulta.
Tabla Facturas | Tabla detallesFacturas |
Id | Id |
(Resto campos) | IdFactura |
IdProducto | |
(Resto campos) |
Imaginemos que tenemos la factura 123 y tenemos que borrarla y queremos borrar también todos los registros referentes a esa factura en la tabla detallesFactura.
La consulta de borrado quedaría así
DELETE a1, a2 FROM Facturas AS a1 INNER JOIN detallesFacturas AS a2 WHERE a1.Id=a2.IdFactura AND a1.Id LIKE 123;
Otra opción podria ser
DELETE FROM a1, a2 USING Facturas AS a1 INNER JOIN detallesFacturas AS a2 WHERE a1.Id=a2.IdFactura AND a1.Id LIKE 123;
Y con esta consulta borraríamos la factura de la tabla Facturas y los datos de la factura que hubiera en la tabla de detallesFacturas.
Mas info aqui: http://dev.mysql.com/doc/refman/5.1/en/delete.html
Que sucede su deseo eliminar solo un campo, que no este enlazado con la otra tabla?