Re: Eliminar registros de varias tablas en una consulta

From: Lennin Caro <lennin(dot)caro(at)yahoo(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org, "Karina J(dot)" <jc(dot)karina(at)gmail(dot)com>
Subject: Re: Eliminar registros de varias tablas en una consulta
Date: 2008-07-31 15:21:26
Message-ID: 412398.22518.qm@web59505.mail.ac4.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

--- On Thu, 7/31/08, Karina J. <jc(dot)karina(at)gmail(dot)com> wrote:

> From: Karina J. <jc(dot)karina(at)gmail(dot)com>
> Subject: [pgsql-es-ayuda] Eliminar registros de varias tablas en una consulta
> To: pgsql-es-ayuda(at)postgresql(dot)org
> Date: Thursday, July 31, 2008, 1:22 PM
> Hola a todos, estoy intentando borrar registros de distintas
> tablas todas
> relacionadas en una sola consulta, y bueno tengo una
> funcion a donde le
> envio un parametro 'idmdi' y quiero eliminar todos
> los registros de varias
> tablas q tengan a este valor 'idmdi' , la consulta
> q estoy utilizando es:
>
> DELETE FROM mdi_detalleinstalacion WHERE (SELECT * FROM
> mdi_detalleinstalacion mdi INNER JOIN mdm_detalle_material
> mdm ON
> mdi.mdi_id=mdm.mdi_id WHERE mdi.mdi_id=idmdi);
>
> pero me sale el sgte error:
>
> ERROR: la subconsulta debe retornar sólo una columna
> CONTEXT: sentencia SQL: «delete from
> mdi_detalleinstalacion where (select
> * from mdi_detalleinstalacion mdi inner join
> mdm_detalle_material mdm on
> mdi.mdi_id=mdm.mdi_id where mdi.mdi_id= $1 )»
> PL/pgSQL function "borrar_detalleinstalacion"
> line 5 at SQL statement
>
> La idea es eliminar registros en una sola consulta.
>
> --
> Saludos,
> Karina

DELETE FROM mdi_detalleinstalacion WHERE (SELECT * FROM
mdi_detalleinstalacion mdi INNER JOIN mdm_detalle_material
mdm ON
mdi.mdi_id=mdm.mdi_id WHERE mdi.mdi_id=idmdi);

quiere decir que el manejador no sabe cual es el campo parar filtar en el where por ello debe de ser un solo campo

puedes usar algo asi

DELETE FROM mdi_detalleinstalacion
WHERE id in
(SELECT id FROM mdi_detalleinstalacion mdi INNER JOIN mdm_detalle_material
mdm ON
mdi.mdi_id=mdm.mdi_id WHERE mdi.mdi_id=idmdi);

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Gilberto Castillo Martínez 2008-07-31 15:33:12 Re: conectar desde Java
Previous Message Alvaro Herrera 2008-07-31 15:15:03 Re: Nuevas presentaciones en la wiki