Re: Consulta con JOINs

From: "Eduardo Arenas C(dot)" <edomax(at)gmail(dot)com>
To: arocha(dot)oscar(at)gmail(dot)com
Cc: pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Consulta con JOINs
Date: 2012-09-22 01:02:29
Message-ID: CAEe4h9rAViFo7tcU+6a7o6Osj9+KschjQNLgjn2_6V6sFsqZfA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Oscar,

Creo que Guillermo tiene razón... no tiene sentido lo que quieres
hacer!

Pero no importa, suponiendo que el ejemplo que diste es consistente,
asumiendo relaciones entre tablas según los nombres de los atributos, creo
que no es necesario hacer joins para resolver tu consulta. Mira lo
siguiente y ve si te sirve:

select tipo_prod.tipo,sum(prod_sol.cantidad)
from prod_sol
,solicitudes
,producto
,tipo_prod
where prod_sol.id_sol = solicitudes.idsol
and prod_sol.id_prod = producto.id_prod
and producto.id_tipo = tipo_prod.id_tipo
and solicitudes.fecha between '2012-01-01' and '2012-01-31'
group by tipo_prod.tipo;

Saludos

Eduardo Arenas C.

El 18 de septiembre de 2012 22:33, Guillermo O. Burastero <
linux(dot)gb(at)gmail(dot)com> escribió:

> Hola,
>
> El día 18 de septiembre de 2012 20:48, oscar arocha
> <arocha(dot)oscar(at)gmail(dot)com> escribió:
> > Saludos lista, nuevamente por aquí solicitando su colaboración, esta vez
> > tengo un inconveniente al momento de realizar una consulta que me permita
> > saber el total de productos solicitados, la estructura de tablas es algo
> > similar a esto
> >
> > tipo_prod{
> >
> > id_tipo int,
> > tipo varchar
> >
> > }
> >
> > producto{
> >
> > id_prod int,
> > id_tipo int,
> > producto
> >
> > }
> >
> > solicitud {
> >
> > id_sol int,
> > fecha date
> >
> > }
> >
> > prod_sol{
> >
> > id_prod int,
> > id_sol int,
> > cantidad int
> >
> > }
> >
> > el query que ejecuto es:
> >
> > SELECT A.tipo_prod, SUM(C.cantidad)
> > FROM tipo_prod A
> > LEFT OUTER producto B ON (A.id_tipo = B.id_tipo)
> > LEFT OUTER prod_sol C ON (B.id_prod = C.id_prod)
> > LEFT OUTER solicitud D ON (C.id_sol = D.id_sol AND D.fecha BETWEEN
> > '2012-01-01' AND '2012-01-31')
> >
> > El inconveniente es que no logro dar con la combinación de JOINs para
> que
> > me pueda generar la lista de tipo_prod completa, con las cantidades
> > correspondientes a ese rango de fecha. ya que el resultado que me arroja
> es
> > la suma de todas las solicitudes sin tomar en cuenta el rango de fecha.
> >
> > Si pueden ayudarme con la consulta se los agradezco.
> >
> > --
> > Ing. Oscar Arocha
> > CIV 208.476
> > 0416-4257379
> > twitter: @ArochaOscar
> >
>
> Primero no tiene sentido sumar cantidades de solicitudes de productos
> distintos (aunque pertenezcan al mismo grupo) pues representan
> distintas cosas (1). Segundo, las funciones de agregación como sum(*)
> requieren una cláusula de agrupamiento GROUP BY.
>
> Es como si en el grupo "Lácteos" sumás envases de yogur, con litros de
> leche, con hormas o kg. de quesos. Las sumas de magnitudes
> heterogéneas no tiene sentido.
>
> Poné un ejemplo sensato del tipo de tabla resultado que pretendés, a
> ver si te podemos ayudar.
>
> Saludos cordiales.
>
> --
> Guillermo O. Burastero
>
> Bahía Blanca, Buenos Aires, Argentina
> Tel. +54 (291) 454-6132 - Móvil [15] 574-3173
>
> MSN: guillermo(dot)burastero(at)gmail(dot)com
> ICQ: 97148268
> Usuario GNU/Linux #84879 - https://linuxcounter.net/user/84879.html
>
> -
> Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda(at)postgresql(dot)org
> )
> Para cambiar tu suscripción:
> http://www.postgresql.org/mailpref/pgsql-es-ayuda
>

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Anthony 2012-09-22 01:35:28 Re: INsert con select condicionado
Previous Message Milton Labanda 2012-09-21 22:34:20 Re: [ecpug] PLV8JS (Javascript en Postgres)