Skip site navigation (1) Skip section navigation (2)

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 (view raw or flat)
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

pgsql-es-ayuda by date

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

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group