Como borrar filas de varias tablas en MySQL
DELETE FROM tabla1, tabla2, tabla3
USING tabla1
INNER JOIN tabla2 USING (id)
INNER JOIN tabla3 USING (id)
WHERE tabla1.id = 123
Por ejemplo, digamos que tienes tres tablas: “productos”, “categorias” y “cats_prods”. Cada producto puede asociarse con más de una categoría. La tabla “cats_prods” guarda todas las categorias asociadas con cada producto. Si queremos eliminar un producto, también tenemos que eliminar todas las filas de la tabla que cats_prods que contienen referencias a ese producto. El siguiente query elimina tanto la fila de la tabla productos como las filas correspondientes de la tabla cats_prods.
DELETE FROM cats_prods, productos
USING cats_prods
INNER JOIN productos USING (prod_id)
WHERE cats_prods.prod_id = 25

Muy buen ejemplo, me servio para lo que necesitaba (en realidad en parte). Igualmente al que vaya a usar el ejemplo que pegue una buena leida primero, ya que cuando lo relei, entendi que borraba de las dos tablas al mismo tiempo
, que era lo queria pero despues me di cuenta que daban bien los numeros!!
gracias amigo, intente hacerlo para mi aplicacion pero no me funciono xD
lo q pasa q tengo 3 tablas, alumno, asignatura_alumnos,carrera_alumnos, el problema si quiero eliminar a algun alumno por su rut, se tendrian q eliminar los datos de la tabla alumno donde este su rut, de la tabla carrera_alumno donde este su rut y de la tabla asignatura_alumno, donde este su rut, es decir, hacer desaparecer en las 3 tablas todos los campo donde este el rut asociado.
Hice esto pero no me funciono:
delete from alumno,carrera_alumno,asignatura_alumno USING alumno
INNER JOIN carrera_alumno USING (rut_alumn)
INNER JOIN asignatura_alumno USING (rut) where alumno.rut =11111111
ojala me puedas ayudar, muchas grax
Muy buena aportacion, tambien me ayudo. gracias
Gracias! .. funciona perfecto .. ya tenia rato buscando y no daba con la solución .
has hecho mal pero a mi tampoco me corre no me llega a eliminar nada y me dce q hay un herror por el foreign key q tieen la segunda tabla el codigo si se me compila y tambien dentro de un procedimiento almacenado q para eso lo necesitaba pero no funciono aunque el procedimiento almacenado si se creo sin errores
Saludos a mi me funciono con el siguiente codigo, pongo un ejemplo con una conexion a MySQL en lenguaje C#.net
try
{
string codigo = Convert.ToString(dtgMostrar.CurrentRow.Cells[0].Value);
MySqlConnection cnn = new MySqlConnection(conexion);
MySqlCommand mycommandg = new MySqlCommand(“DELETE FROM proveedor_producto WHERE cod_proveedor= ?cod_proveedor; DELETE FROM compra WHERE cod_proveedor= ?cod_proveedor; DELETE FROM proveedor WHERE cod_proveedor= ?cod_proveedor; DELETE FROM entrega WHERE cod_proveedor= ?cod_proveedor”);
mycommandg.Parameters.Add(“?cod_proveedor”, MySqlDbType.Int32, 20).Value = codigo;
mycommandg.Connection = cnn;
cnn.Open();
mycommandg.ExecuteNonQuery();
mycommandg.Connection.Close();
MessageBox.Show(“Se ha eliminado el proveedor satisfactoriamente”, “EXITO”, MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
catch
{
MessageBox.Show(“No se pudo conectar a la base de datos”, “ERROR”, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
Primero elimino los registros de las tablas que estan relacionadas con Proveedor y luego los registros de la Tabla proveedor en solo Query
Parece muy largo pero en fin funciona XD y es facil de recordar
Hola tengo esta que eliminar el id de dos tablas solo que el id no tiene el mismo nombre como lo hago?? tengo esta consulta
delete from cliente,usuario where cliente.cli_cliente=usuario.clcliente and cli_cliente=’3612′
espero me puedan apoyar