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

From: Yessica Brinkmann <yessica(dot)brinkmann(at)gmail(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Fwd: Trato de hacer un join de tipo distinct (+ORDENADO)
Date: 2006-02-02 14:31:26
Message-ID: a3b0d4880602020631h5a9d8f1dg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

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.

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message hernando bocanegra grajales 2006-02-02 14:36:38 pg_dump desde java
Previous Message Yessica Brinkmann 2006-02-02 14:28:47 Trato de hacer un join de tipo distinct