From: | "Yessica Brinkmann" <yessica(dot)brinkmann(at)gmail(dot)com> |
---|---|
To: | "Yessica Brinkmann" <yessica(dot)brinkmann(at)gmail(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Retornar 0 cuando no existen ocurrencias en consulta |
Date: | 2006-02-24 12:44:48 |
Message-ID: | a3b0d4880602240444g7d2452ado@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Gracias.
No comprendo como aplicar el LEFT OUTER JOIN en mi caso, ya que mi
subconsulta no está condicionada con relación a la consulta principal.
Disculpa mi impertinencia, pero, podrías mirar por favor mi sql que es el
siguiente:
select productor.nombres || ' ' || productor.apellidos as productor,
companhia.nombre as companhia,
distrito.nombre as distrito,
departamento.nombre as departamento,
sum(productividad.total_gs::decimal) as monto,
subtable.monto_ant as monto_ant
from productor, companhia, distrito, departamento, productividad,
(
select sum(productividad.total_gs::decimal) as monto_ant
from productor, productividad
where productividad.fecha >'2002/10/1'AND productividad.fecha
<'2002/12/31'
and productividad.cod_productor=productor.cod_productor
group by productor.nombres, productor.apellidos
) as subtable
where productividad.fecha >'2005/10/1'AND productividad.fecha
<'2005/12/31'
and productor.cod_companhia=companhia.cod_companhia
and productor.cod_distrito=distrito.cod_distrito
and productor.cod_dpto=departamento.cod_depto
and productividad.cod_productor=productor.cod_productor
group by productor.nombres, productor.apellidos, companhia.nombre,
distrito.nombre, departamento.nombre, subtable.monto_ant
Necesito que la consulta se ejecute aún cuando subtable.monto_ant no tenga
una ocurrencia.
Gracias.
Yessica
El día 24/02/06, Alvaro Herrera <alvherre(at)commandprompt(dot)com> escribió:
>
> Yessica Brinkmann escribió:
> > Muchas gracias por tu interés y tu respuesta.
> > Conozco LEFT OUTER JOIN. Normalmente no me gusta mucho usarlo; en
> realidad,
> > ni siquiera suelo usar los join simples, ya que trato de usar
> normalmente un
> > sql que sea digamos "genérico", es decir, que funcione para cualquier
> > gerenciador, sea este Postgres, SQLServer, Oracle, etc., ya que la
> empresa
> > en la que trabajo este es siempre un requerimiento de desarrollo.
>
> LEFT JOIN esta soportado al menos por Oracle, probablemente SQL Server
> tambien. Es parte del estandar.
>
> (No es cierto que no uses joins: la consulta
> "SELECT * FROM a,b WHERE a.foo=b.bar" tiene un inner join).
>
> > En todo caso, sino hay otra forma de hacerlo, usaré el LEFT OUTER JOIN.
> Me
> > recomiendas que lo use dentro de la consulta a subtable o en la consulta
> > principal?
>
> Te recomiendo que lo uses solo donde es estrictamente necesario :-) La
> verdad es que no recuerdo cual de los JOINs tuyos necesitaba ser
> convertido a OUTER JOIN. Pero conceptualmente es simple: un left outer
> join entrega tuplas para el RTE de la izquierda aun cuando no hay una
> tupla correspondiente a la derecha. (RTE = Range Table Entry; cada
> elemento individual de la clausula FROM es un RTE, sea una tabla,
> subconsulta, etc).
>
> --
> Alvaro Herrera
> http://www.CommandPrompt.com/
> The PostgreSQL Company - Command Prompt, Inc.
>
From | Date | Subject | |
---|---|---|---|
Next Message | Raul Caso | 2006-02-24 13:11:49 | Re: pregunta importacion con copy |
Previous Message | Alvaro Herrera | 2006-02-24 12:31:11 | Re: Retornar 0 cuando no existen ocurrencias en consulta |