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

borrar filas hijas y nietas

Estas en el tema de borrar filas hijas y nietas en el foro de Bases de Datos General en Foros del Web. buenos días, pretendo borrar una fila y sus correspondientes filas hijas y nietas en una base de datos mysql, para ello utilizo este código $sql="DELETE ...
  #1 (permalink)  
Antiguo 29/06/2005, 04:51
 
Fecha de Ingreso: abril-2005
Ubicación: vivo donde puedo
Mensajes: 133
Antigüedad: 19 años, 7 meses
Puntos: 0
borrar filas hijas y nietas

buenos días, pretendo borrar una fila y sus correspondientes filas hijas y nietas en una base de datos mysql, para ello utilizo este código

$sql="DELETE
FROM organizadores AS p, formacion AS t, participantes AS s
WHERE p.num_organizador=t.num_organizador
AND
t.num_correlativo=s.num_correlativo
AND
Num_organizador=$num_organizador_e";

la fila padre estaría en la tabla organizadores y $num_organizador_e sería un valor seleccionado

pero lo único que obtengo es este mensaje de error

You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'AS p, formacion AS t, participantes AS s WHERE p.num_organiza
__________________
Visita mi página web.Carlos Zapata Company
Visita mi blog.
Únete a mi lista de correo.
--------------------------------------------------
La identidad no es lo que fuimos, ni lo que creemos que somos; la identidad es cómo miramos la mundo.

José Luis Rodríguez Zapatero, actual presidente del Gobierno español.
  #2 (permalink)  
Antiguo 29/06/2005, 08:36
 
Fecha de Ingreso: junio-2005
Mensajes: 63
Antigüedad: 19 años, 5 meses
Puntos: 0
no estoy seguro, pero me parece que no se puede borrar de varias tablas a la vez
  #3 (permalink)  
Antiguo 29/06/2005, 15:08
Avatar de haron  
Fecha de Ingreso: febrero-2004
Ubicación: Cádiz (refinitivo)
Mensajes: 632
Antigüedad: 20 años, 9 meses
Puntos: 3
acabo de hacer una prueba y en MySQL si se pueden borrar registros de dos tablas a la vez:
Código:
delete master.*, detail.*
from master
inner join detail on detail.master_id = master.id
where master.id = 2
en el caso anterior me borro el registro con "id=2" y todos los registros hijos.

ver link:
http://www.forosdelweb.com/f21/queries-anidadas-mysql-310515/
__________________
Si ocurre algo importante, estamos afuera fumándonos unos cigarritos.
  #4 (permalink)  
Antiguo 30/06/2005, 06:13
 
Fecha de Ingreso: abril-2005
Ubicación: vivo donde puedo
Mensajes: 133
Antigüedad: 19 años, 7 meses
Puntos: 0
muchas gracias, es muy interesante tu solución y también la dirección. he encontrado la manera de borrar filas padre e hijas, te copio el código de la página de respuesta

$sql="DELETE
FROM personal WHERE Num_personal=$num_personal_e";

If ($res=send_sql($db,$sql)) {
echo "</br></br>El comando SQL se ha ejecutado";
echo "</br></br>Se ha eliminado el registro seleccionado de la tabla personal";
}

$sql1="DELETE
FROM participantes WHERE Num_personal=$num_personal_e";


If ($res=send_sql($db,$sql1)) {
echo "</br></br>El comando SQL se ha ejecutado";
echo "</br></br>También se han eliminado las filas hijas de la tabla participantes";
}

$num_personal_e es un valor seleccionado en un combo, es muy sencillo se trata solamente de hacer dos delete en lugar de uno. lo que estaría muy bien es poder borrar las filas nietas pero por este sistema y creo que también por el tuyo, habría que agregar un campo a la tabla con las filas nietas que fuera clave externa con el valor de la clave principal de la fila abuelo. la operación de borrado no presentaría mayor problema solo habría que añadir otro delete. lo que pasa es que a la hora de agregar filas a la tabla nieta tendrías que molestar al usuario pidiendo el valor de otra clave secundaria o, inventar un sistema para que este valor se añadiera automáticamente. no soy partidario de molestar al usuario entre otras cosas porque estoy convencido de que esto es una fuente de errores. no tengo mucha experiencia con php y de momento no voy a seguir experimentando porque tengo programadas otras prioridades pero algún día puede que vuelva sobre el tema de borrar en cascada filas padre, hijas y nietas.
estoy dandole los últimos toques a la página y en pocos días estará disponible en mi sitio. podrás entrar directamente a borrar en cascada aquí

http://www.carloszcom.com/base2/modificar/casca_per.php

y también estará visible el código de esta página que es el formulario para borrar y la página de respuesta.

gracias por todo y hasta pronto.
__________________
Visita mi página web.Carlos Zapata Company
Visita mi blog.
Únete a mi lista de correo.
--------------------------------------------------
La identidad no es lo que fuimos, ni lo que creemos que somos; la identidad es cómo miramos la mundo.

José Luis Rodríguez Zapatero, actual presidente del Gobierno español.
  #5 (permalink)  
Antiguo 16/10/2009, 13:42
 
Fecha de Ingreso: octubre-2009
Mensajes: 1
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: borrar filas hijas y nietas

Quedaria mejor con LEFT JOIN ya que si el ID master no tiene registros en la tabla detail, entonces no borra nada en ninguna tabla.

Entonces:

Código:
delete master.*, detail.*
from master
LEFT join detail on detail.master_id = master.id
where master.id = 2

Y en el caso de continuar borrando tablas nietas y bisnietas solamente agregamos otro JOIN:
Código:
delete master.*, detail.*, nietas.*
from master
LEFT join detail on detail.master_id = master.id
LEFT join nietas on nietas.detail_id = detail.id
where master.id = 2
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:21.