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

eliminar de 5 tablas relacionadas

Estas en el tema de eliminar de 5 tablas relacionadas en el foro de Mysql en Foros del Web. buenas, quiero eliminar un dato que esta relacionado en 5 tablas, todas por un id comun. he probado algo asi: Código: DELETE FROM datos_1, datos_2, ...
  #1 (permalink)  
Antiguo 08/08/2010, 17:37
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 2 meses
Puntos: 3
eliminar de 5 tablas relacionadas

buenas,

quiero eliminar un dato que esta relacionado en 5 tablas, todas por un id comun. he probado algo asi:

Código:
DELETE FROM datos_1, datos_2, datos_3, datos_4, datos_5
WHERE '8037' IN (datos_1.iddato,datos_2.iddato,datos_3.iddato,datos_4.iddato)
AND datos_4.iddato = datos_5.iddato
donde 8037 es el iddato relacionado en todas las tablas. que hago mal?

saludos!
  #2 (permalink)  
Antiguo 09/08/2010, 00:35
 
Fecha de Ingreso: enero-2009
Ubicación: Mexico
Mensajes: 99
Antigüedad: 15 años, 2 meses
Puntos: 2
Respuesta: eliminar de 5 tablas relacionadas

Depende el manejador que uses, pero creo que necesitarás de 5 sentencias apartadas, una por cada tabla.

Código SQL:
Ver original
  1. DELETE FROM datos_1 WHERE iddato = '8037';
  2. DELETE FROM datos_2 WHERE iddato = '8037';
  3. DELETE FROM datos_3 WHERE iddato = '8037';
  4. DELETE FROM datos_4 WHERE iddato = '8037';
  5. DELETE FROM datos_5 WHERE iddato = '8037';
__________________
Yo no desarrollo páginas de internet. Hago Códices Web...
  #3 (permalink)  
Antiguo 09/08/2010, 10:53
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 2 meses
Puntos: 3
Respuesta: eliminar de 5 tablas relacionadas

buenas,

estoy trabajando con php, y lo que me interesa es que de un listado de productos, poder borrar uno a uno, enviar el iddato y borrarlo. estas seguro que no se puede ejecutar en una misma consulta, al igual que he podido hacer un select?

saludos!!
  #4 (permalink)  
Antiguo 10/08/2010, 02:08
 
Fecha de Ingreso: enero-2009
Ubicación: Mexico
Mensajes: 99
Antigüedad: 15 años, 2 meses
Puntos: 2
Respuesta: eliminar de 5 tablas relacionadas

Sí es posible borrar registros de varias tablas en una sola sentencia; auque considero que no es práctico

http://dev.mysql.com/doc/refman/5.0/es/delete.html

Así borrarias de todas las tablas:

Código SQL:
Ver original
  1. DELETE d1,d2,d3,d4,d5 FROM datos_1 AS d1, datos_2 AS d2, datos_3 AS d3, datos_4 AS AS d4, datos_5 AS d5 WHERE '8037' IN (d1.iddato,d2.iddato,d3.iddato,d4.iddato) AND d4.iddato = d5.iddato

O así solo borrarias registros de la tabla "datos_1"

Código SQL:
Ver original
  1. DELETE d1 FROM datos_1 AS d1, datos_2 AS d2, datos_3 AS d3, datos_4 AS AS d4, datos_5 AS d5 WHERE '8037' IN (d1.iddato,d2.iddato,d3.iddato,d4.iddato) AND d4.iddato = d5.iddato
__________________
Yo no desarrollo páginas de internet. Hago Códices Web...
  #5 (permalink)  
Antiguo 10/08/2010, 13:24
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 2 meses
Puntos: 3
Respuesta: eliminar de 5 tablas relacionadas

hola codecweb,

no me funciona tu codigo. necesito borrar todos los registros de cada una de las tablas que tengan ese iddato en comun.

he puesto tu codigo y me da un error de sintax. he hecho un DELETE * FROM datos_1 as d1..... y me da error.

Código:
DELETE d1,
d2,
d3,
d4,
d5 FROM datos_1 AS d1,
datos_2 AS d2,
datos_3 AS d3,
datos_4 AS d4,
datos_5 AS d5 WHERE '8037' IN (

d1.iddato,
d2.iddato,
d3.iddato,
d4.iddato
) AND d4.iddato = d5.iddato
pq dices que es poco practico? es mejor hacer 5 querys?

saludos!
  #6 (permalink)  
Antiguo 10/08/2010, 22:08
 
Fecha de Ingreso: enero-2009
Ubicación: Mexico
Mensajes: 99
Antigüedad: 15 años, 2 meses
Puntos: 2
Respuesta: eliminar de 5 tablas relacionadas

Cita:
necesito borrar todos los registros de cada una de las tablas que tengan ese iddato en comun.
Pues esque para eso, te digo, es tan facil como:

Código SQL:
Ver original
  1. DELETE FROM datos_1 WHERE iddato = '8037';
  2. DELETE FROM datos_2 WHERE iddato = '8037';
  3. DELETE FROM datos_3 WHERE iddato = '8037';
  4. DELETE FROM datos_4 WHERE iddato = '8037';
  5. DELETE FROM datos_5 WHERE iddato = '8037';

Ahora, la sentencia
Código SQL:
Ver original
  1. DELETE * FROM
debe de ser sintacticamnte incorrecta.

No significa que usar 5 querys sea mejor que usar una, solo que creo que el objetivo esque el programa haga lo que tu quieres: no importando que camino tomes.
__________________
Yo no desarrollo páginas de internet. Hago Códices Web...
  #7 (permalink)  
Antiguo 11/08/2010, 03:11
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 2 meses
Puntos: 3
Respuesta: eliminar de 5 tablas relacionadas

gracias codecweb,

entonces como utilizo php, hare 5 querys con los 5 DELETE!

saludos y muchas gracias!
  #8 (permalink)  
Antiguo 11/08/2010, 06:20
Avatar de 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, 4 meses
Puntos: 2658
Respuesta: eliminar de 5 tablas relacionadas

¿Y probaste este modelo (sacado del manual de referencia)?:
Código MySQL:
Ver original
  1. DELETE datos_1, datos_2, datos_3, datos_4, datos_5
  2. FROM datos_1
  3.   INNER JOIN datos_2 USING(iddato)
  4.   INNER JOIN datos_3 USING(iddato)
  5.   INNER JOIN datos_4 USING(iddato)
  6.   INNER JOIN datos_5 USING(iddato)
  7. WHERE iddato = '8037';
__________________
¿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: eliminar, relacionadas, tablas
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 11:47.