From: | Jeremy Semeiks <jrs(at)farviolet(dot)com> |
---|---|
To: | Lane Van Ingen <lvaningen(at)esncc(dot)com>, pgsql-sql(at)postgresql(dot)org |
Subject: | Re: Is it This Join Condition Do-Able? |
Date: | 2005-08-17 17:44:50 |
Message-ID: | 20050817174450.GU28158@farviolet.farviolet.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
On Wed, Aug 17, 2005 at 12:54:50PM -0400, Lane Van Ingen wrote:
> Given three tables: a, b, c ; each consist of a 'keyfld' and a field called
> 'foo':
> tbl a tbl b tbl c
> --------- --------- ---------
> a.keyfld b.keyfld c.keyfld
> a.foo1 b.foo2 c.foo3
>
> I want to always return all of tbl a; and I want to return b.foo2 and c.foo3
> if
> they can be joined to based on keyfld.a; I know that it will involve a LEFT
> OUTER
> JOIN on table a, but have not seen any examples of joins like this on 3 or
> more
> tables.
>
> select a.keyfld, a.foo1, b.foo2, c.foo3
> from a, b, c
> where a.keyfld = <some value>
> and a.keyfld = b.keyfld
> and a.keyfld = c.keyfld;
>
> Results could look like this:
> a.keyfld a.foo1 b.foo2 c.foo3
> xxxx xxxx xxxx (null)
> xxxx xxxx (null) xxxx
> xxxx xxxx (null) (null)
> xxxx xxxx xxxx xxxx
Just use two left joins:
select a.keyfld, a.foo1, b.foo2, c.foo3
from a
left join b on a.keyfld = b.keyfld
left join c on a.keyfld = c.keyfld
where a.keyfld = <some value>;
HTH,
Jeremy
From | Date | Subject | |
---|---|---|---|
Next Message | Roger Motorola | 2005-08-17 19:06:50 | Locating ( FKs ) References to a Primary Key |
Previous Message | Michael Fuhr | 2005-08-17 17:43:55 | Re: Is it This Join Condition Do-Able? |