Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Usar DELETE relacionando 2 tablas (https://www.clubdelphi.com/foros/showthread.php?t=10546)

Rakelina 21-05-2004 21:13:24

Usar DELETE relacionando 2 tablas
 
Hola a todos!!!. He estado mirando los foros y he encontrado como usar delete para borrar registros pero de la misma tabla. Lo que necesito es borrar una tupla pero relacionando dos tablas. Por ejemplo tengo estas tablas

Pedidos Facturas
--------- -----------
IDpedido IDfactura
IDfactura Tipo_factura

lo que querria es borrar los pedidos facilitando el Tipo de factura
He intentado algo asi:

DELETE
FROM Pedidos,Facturas
WHERE Tipo_factura=:ID AND Facturas.IDfactura=Pedidos.IDfactura

Pero esto no funciona.
Alguien tiene una idea o me puede ayudar???.


Muchas gracias a todos.

delphi.com.ar 21-05-2004 21:17:20

El delete que pides va a elimiar reguistros de una sola tabla, pero cuando exista una relación con la otra. Esto lo puedes solucionar con la sentencia IN o EXISTS:
Código SQL [-]
DELETE FROM FACTURAS
WHERE TIPO_FACTURA = :ID
AND EXISTS (SELECT 1 FROM PEDIDOS WHERE FACTURAS.ID = PEDIDOS.ID)

(no se si precisamente quieres que haga lo que hace esta consulta pero esa es la idea)
Saludos!

delphi.com.ar 21-05-2004 21:18:47

Cita:

Empezado por Rakelina
lo que querria es borrar los pedidos facilitando el Tipo de factura

Me perdí ese detalle! :D

Bueno, la consulta evidentemente es al revés, pero creo que con ese ejemplo puedes resolverlo.

hermes_32 21-05-2004 21:45:50

DELETE
FROM Pedidos
WHERE Tipo_factura=:ID
AND Facturas.IDfactura = (SELECT IDfactura FROM Facturas)


Creo que te valdra.

jachguate 22-05-2004 03:59:35

Lo siento hermes, pero esto borraria todos los pedidos para los que exista al menos una factura, no???. Ademas en lugar del = debiera tener el operador in, de lo contrario, al existir mas de una factura en la tabla, la sentencia tendria que devolver un error, puesto que no se puede aplicar el = a un conjunto de registros.

Yo creo que con lo ya aportado por delphi.com.ar debiera estar en capacidad de resolverlo.

Hasta luego.

;)

Rakelina 22-05-2004 16:01:57

Hola!!!!!!
Gracias a todos por la rapidas respuestas, ire probando lo que me habeis dicho a ver que ocurre.
Saluditos.
Rachel


La franja horaria es GMT +2. Ahora son las 03:05:58.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi