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

Peripheral Links

Header And Logo

PostgreSQL
| The world's most advanced open source database.

Site Navigation

Search for
  Advanced Search

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." <jc(dot)karina(at)gmail(dot)com>
  • Subject: Re: Eliminar registros de varias tablas en una consulta
  • Date: Thu, 31 Jul 2008 08:21:26 -0700 (PDT)
  • Message-id: <412398(dot)22518(dot)qm(at)web59505(dot)mail(dot)ac4(dot)yahoo(dot)com>



--- 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);







Home | Main Index | Thread Index

Privacy Policy | PostgreSQL Archives hosted by Command Prompt, Inc. | Designed by tinysofa
Copyright © 1996 – 2008 PostgreSQL Global Development Group