Skip site navigation (1) Skip section navigation (2)

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 (view raw or flat)
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

pgsql-es-ayuda by date

Next:From: Raul CasoDate: 2006-02-24 13:11:49
Subject: Re: pregunta importacion con copy
Previous:From: Alvaro HerreraDate: 2006-02-24 12:31:11
Subject: Re: Retornar 0 cuando no existen ocurrencias en consulta

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group