Re: Fwd: Trato de hacer un join de tipo distinct (+ORDENADO)

From: Mariana Cecilia Arruzazabala <arruzazabala(at)gmail(dot)com>
To: Yessica Brinkmann <yessica(dot)brinkmann(at)gmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Fwd: Trato de hacer un join de tipo distinct (+ORDENADO)
Date: 2006-02-02 15:12:00
Message-ID: bc9fe0270602020712o24a54e7di@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola Yessica, probá con

select cod_categoria,sum(valor) from a
where cod_a in (select distinct cod_a from b)
group by cod_categoria;

Cecilia.

El día 2/02/06, Yessica Brinkmann <yessica(dot)brinkmann(at)gmail(dot)com> escribió:
>
> Reenvío mi mensaje ya que el anterior estaba un poco desordenado. Lo
> siento mucho...
>
> ---------- Forwarded message ----------
> From: Yessica Brinkmann < yessica(dot)brinkmann(at)gmail(dot)com>
> Date: 02-feb-2006 10:28
> Subject: Trato de hacer un join de tipo distinct
> To: pgsql-es-ayuda(at)postgresql(dot)org
>
> Buenos días.
>
> Quisiera saber si existe algún tipo de join o alguna manera de condicionar
> una consulta de tal forma que la primera tabla solo haga correspondencia con
> la segunda tabla una sola vez.
>
> Me explico mejor:
>
> Por ejemplo, si cuento con una tabla llamada a y otra llamada b, y tengo
> por ejemplo los siguientes datos...
>
> tabla a
>
> cod_a valor cod_categoria
> 1 35 1
> 2 45 1
> 3 55 2
> 4 33 1
>
>
> tabla b
>
> cod_b cod_a numero
> 1 1 12
> 2 1 24
> 3 1 46
> 4 2 18
> 5 2 33
> 6 2 29
> 7 3 8
> 8 3 66
> 9 3 10
>
> nota que la tabla b tiene una clave foránea que referencia a la tabla a...
>
> Lo que yo quiero hacer es muy simple...
> quiero sumar los números que están en el campo valor de la tabla a cuando
> un registro de
> dicha tabla esté relacionado con la tabla b, pero quiero sumar (agrupando
> por categoría) cada valor "una" sola vez, de tal
> manera a obtener como resultado: (35+45) = 80 para la categoría 1 y 55
> para la categoría 2 , 33 no se suma en ningún momento porque no existe el
> cod_a correspondiente en la tabla b.
> Esta suma no la quiero realizar aisladamente, sino que la misma es parte
> de una consulta bastante compleja...pero este es mi principal problema
> He tratado de realizar esto de varias formas, con todos los tipos de join
> que conosco y con la cláusula in (select distinct ...), pero el resultado
> que obtengo es siempre que el valor de la tabla a se suma cada vez que
> aparece como clave foránea en la tabla b, y no una sola vez.
> Para este ejemplo obtendría en ese caso:
> 240 para la categoría 1 y 165 para la categoría 2, es decir que los
> valores de a siempre se suman por cada vez que cod_a aparece en la tabla b y
> no una sola vez.
>
> Si alguien tiene una respuesta a esta pregunta, o ha tenido una
> experiencia similar anteriormente,quisiera pedirle que por favor me hable
> acerca de ello.
>
> Muchas gracias.
>
> Yessica Brinkmann.
>

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Roberto Antolin 2006-02-02 15:30:58 psql con windows y linux
Previous Message hernando bocanegra grajales 2006-02-02 14:36:38 pg_dump desde java