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