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

Borrar registros de varias tablas con una sola consulta

Estas en el tema de Borrar registros de varias tablas con una sola consulta en el foro de Bases de Datos General en Foros del Web. necesito borrar registros de varias tablas el tema es que hasta ahora no tenia problemas porque siepre eran de dos tablas y ambas estaban relacionadas ...
  #1 (permalink)  
Antiguo 26/04/2005, 09:52
 
Fecha de Ingreso: enero-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.047
Antigüedad: 21 años, 2 meses
Puntos: 10
Borrar registros de varias tablas con una sola consulta

necesito borrar registros de varias tablas el tema es que hasta ahora no tenia problemas porque siepre eran de dos tablas y ambas estaban relacionadas con columna en comun, por lo que con esto me era suficiente:

Código PHP:
DELETE tabla ,tabla2
   FROM tabla x
,tabla2 x2
   WHERE x
.ID=AND
   
x.ID=x2.ID 
Pero ahora neceisto borrar la informacion de 4 tablas: las 3 primeras estan relacionadas, pero la cuarta esta relacionada a la 3 con un columna diferente a las anteriores.
Seria algo asi:

1: ID | nombre

2: ID | descripcion

3: ID | ID2 | productos

4: ID2 | campo

Como puedo hacer para para borrar los registros relacionados de las 4 tablas en una misma consulta SQL...
__________________
oohh... quisiera ser godines!!!
  #2 (permalink)  
Antiguo 26/04/2005, 09:58
 
Fecha de Ingreso: marzo-2005
Mensajes: 27
Antigüedad: 19 años, 1 mes
Puntos: 0
Mira si tienes activado el borrado en cascada ,si es así borrando de una única tabla se borra en las demás.
  #3 (permalink)  
Antiguo 26/04/2005, 10:00
 
Fecha de Ingreso: enero-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.047
Antigüedad: 21 años, 2 meses
Puntos: 10
Gracias por la respuesta pero no, no lo tengo activado (y no puedo activarlo)
__________________
oohh... quisiera ser godines!!!
  #4 (permalink)  
Antiguo 26/04/2005, 12:45
 
Fecha de Ingreso: mayo-2003
Mensajes: 328
Antigüedad: 20 años, 11 meses
Puntos: 0
Hola:

Se me ocurre que podrías hacer algo así:

Código:
DELETE FROM tabla1, tabla2, tabla2, tabla4 
WHERE tabla1.ID = '[ID A ELIMINAR]'
AND tabla2.ID = tabla1.ID
AND tabla3.ID = tabla2.ID
AND tabla4.ID2 = tabla3.ID2
O también:

Código:
DELETE FROM tabla1, tabla2, tabla2, tabla4 
WHERE '[ID A ELIMINAR]' IN (tabla1.ID,tabla2.ID,tabla3.ID)
AND tabla3.ID2 = tabla4.ID2

NOTA: No he probado los querys pero me imagino que deben de funcionar.
__________________
Uriel Lizama, Perl Developer

Aprende Perl en Perl en Español.
  #5 (permalink)  
Antiguo 27/04/2005, 11:24
 
Fecha de Ingreso: febrero-2005
Mensajes: 12
Antigüedad: 19 años, 2 meses
Puntos: 0
ayuda en delete postgresql

ayuda en delete en postgresql

Por favor ayúdeme necesito realizar una opción para eliminar lo he intentado y siempre me da error no estoy bloqueado... esta opciones de update y insert me funcionan perfectamente pero estoy tratando de hacer delete y nada que me funciona. si alguien me puede ayudar de verdad se lo voy agradecer mucho. Por favor responder a [email protected] gracias... la base de dato esta en postgresql y lenguaje php

$carnet = $_POST["CARNET"];
$cedula = $_POST["CEDULA"];
$registro = $_POST["REGISTRO"];

$connection_string = "host=servidor dbname=name_db user=name_user password=123456";
$conn = pg_connect($connection_string);

if ($accion == "Actualizar"){
$sql = "UPDATE \"tabla1\" SET ";
$sql = $sql . "\" carnet\"='$ carnet', ";
$sql = $sql . "\" cedula\"='$ cedula', ";
$sql = $sql . "\"registro\"='$registro', ";
$sql = $sql . " WHERE \" cedula\"='$cedula' and \"registro\"='$registro'";
}
else
{
$sql = "INSERT INTO \"tabla1\" (";
$sql = $sql . "\" carnet\",";
$sql = $sql . "\" cedula\",";
$sql = $sql . "\" registro\") VALUES (";
$sql = $sql . "'$ carnet',";
$sql = $sql . "'$ cedula',";
$sql = $sql . "'$registro',";
}
  #6 (permalink)  
Antiguo 27/04/2005, 12:59
 
Fecha de Ingreso: enero-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.047
Antigüedad: 21 años, 2 meses
Puntos: 10
Gracias Kidd una variacion de tu primer ejemplo me sirvio para hacer lo que queria....

alejandrocc03: me imagino que para borrar ese registro deberias usar algo como:

Código:
$sql = "DELETE FROM tabla1 WHERE cedula='$cedula' and registro='$registro'";
__________________
oohh... quisiera ser godines!!!
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 00:16.