Re: Retornar 0 cuando no existen ocurrencias en consulta

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.
>

In response to

Responses

Browse pgsql-es-ayuda by date

  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