--- On Thu, 7/31/08, Karina J. <[EMAIL PROTECTED]> wrote:

> From: Karina J. <[EMAIL PROTECTED]>
> Subject: [pgsql-es-ayuda] Eliminar registros de varias tablas en una consulta
> To: [email protected]
> 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);




--
TIP 6: ¿Has buscado en los archivos de nuestra lista de correo?
               http://archives.postgresql.org/pgsql-es-ayuda

Responder a