RE: Update con select

From: "Miguel Angel" <mvillagomez(at)sayab(dot)com(dot)mx>
To: "'Arturo Valenzuela'" <avalenzuelap(at)gmail(dot)com>
Cc: <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: RE: Update con select
Date: 2006-03-06 20:57:38
Message-ID: 20060306205814.569F19DC83A@postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Mientras alguien te dice como se puede hacer con una busqueda te doy esta
función que te ayudará en lo que pides, solo que necesitas instalar el
lenguaje PLPGSQL.

CREATE OR REPLACE FUNCTION prueba() RETURNS INTEGER AS $$

DECLARE

a RECORD;

cont INTEGER:=0;

BEGIN

FOR a IN (SELECT * FROM tabla2 ORDER BY cod) LOOP

UPDATE tabla1 SET des=(SELECT des FROM tabla2 WHERE cod=a.cod) WHERE
cod=a.cod;

cont:=cont+1;

END LOOP;

RAISE NOTICE '% elementos actualizados.',cont;

RETURN cont;

END;

$$ LANGUAGE PLPGSQL;

SELECT prueba();

_____

De: pgsql-es-ayuda-owner(at)postgresql(dot)org
[mailto:pgsql-es-ayuda-owner(at)postgresql(dot)org] En nombre de Arturo Valenzuela
Enviado el: Lunes, 06 de Marzo de 2006 02:36 p.m.
Para: pgsql-es-ayuda(at)postgresql(dot)org
Asunto: Re: [pgsql-es-ayuda] Update con select

Bueno gracias,

pero la verdad sigue saliendo el mismo error : mas de 1 fila ha retornado
el subquery.

no pense que fuera tan complicado. por cierto la version que tengo es el 8.1

El día 6/03/06, Espartano <espartano(dot)mail(at)gmail(dot)com> escribió:

On 3/6/06, Arturo Valenzuela <avalenzuelap(at)gmail(dot)com> wrote:
>
> Gracias por responder
> Espartano , me muestra el error
>
>
> more than one row returned by a subquery used as an expression
>
>
> Lo que deseo es actualizar el campo de la tabla1 con el otro campo de la
> tabla2 , donde la relacion es de 1 a 1, osea que se actualize toda la
> tabla1,
>
> algo asi por ejemplo,
> tabla1 tabla2
> cod des cod des
> ----- ------------------ -----
> -----------------------
> 01 01
> a
> 02 02
> b
> 03 03
> c
>
> donde al final tabla1 quedaria
>
> cod des
> ----- ----------------------
> 01 a
> 02 b
> 03 c
>

update tabla1 set des = (select tabla2.des from tabla2,tabla1 where
tabla1.cod = tabla2.cod );

esi te debaria de funcionar :)

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Juan Martínez 2006-03-06 21:06:54 Re: definicion de limite campo varchar
Previous Message Arturo Valenzuela 2006-03-06 20:35:36 Re: Update con select