Re: Left join anidados

From: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
To: William Diaz Pabón <widipa(at)gmail(dot)com>
Cc: PostgreSQL Español Ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Left join anidados
Date: 2008-08-29 02:39:20
Message-ID: 20080829023920.GL8424@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

William Diaz Pabón escribió:

> se puede en postgresql hacer uso de un left join anidado?.

Se puede hacer un left join anidado, pero eso no es lo que tu quieres
hacer aqui. Lo que tu pides son simplemente dos left joins, uno a la
izquierda del otro:

> por ejemplo tengoa la tabla matricula_area, matricula_asignatura,
> calificacion.
>
> Necesito buscar todo los regsitros de matricula_area, asi no esten en
> matricula_asignatura y a su vez buscar de esos registros que salgan en
> matricula_asignatura buscar los registro que existan en la tabla
> calificacion.

select ...
from matricula_area
left join matricula_asignatura on ( ... )
left join calificacion on ( ... )
where ...

Me imagino que un left join anidado sería algo así:

select ...
from a
left join (
b left join c on ( condiciones entre b y c )
) on ( condiciones entre a y el left join interno )

Observa que en algunos casos se puede "aplanar" un left join de este
tipo a una expresión como la que te muestro arriba (el optimizador lo
hace automáticamente en algunos casos, a partir de 8.2)

También puedes construir cosas raras con más left joins usando
subselects.

--
Alvaro Herrera Developer, http://www.PostgreSQL.org/
"Limítate a mirar... y algun día veras"

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jaime Casanova 2008-08-29 03:55:46 Re: Cómo cambio el plan de ejecución de un query
Previous Message Agustin Casiva 2008-08-28 23:17:19 Re: Left join anidados