Обсуждение: What is Syntax for multiple FULL OUTER JOINS?
Is it possible to do a full outer join on 3 or more queries? I figured out how to do 2, but I get an error message when trying to do three Example: (works) select coalesce(a.f1, b.f1) as col_1, b.f2 as col_2 from(select f1, f2 from table1 where f3 =1) a FULL OUTER JOIN(select f1, f2 from table1 where f3 =2) b on a.f1 = b.f1 (does not work) select coalesce(a.f1, b.f1,c.f1) as col_1, b.f2 as col_2, c.f2 as col_3 from(select f1, f2 from table1 where f3 =1) a FULL OUTER JOIN(select f1, f2 from table1 where f3 =2) b FULL OUTER JOIN(select f1, f2 from table1 where f3 =3) c on a.f1 = b.f1and a.f1 = c.f1 TIA Patrick Hatcher Macys.Com Legacy Integration Developer 415-932-0610 office HatcherPT - AIM
On Tue, 19 Mar 2002, Patrick Hatcher wrote: > Is it possible to do a full outer join on 3 or more queries? I figured out > how to do 2, but I get an error message when trying to do three > > > Example: > > (works) > select coalesce(a.f1, b.f1) as col_1, b.f2 as col_2 > from > (select f1, f2 from table1 where f3 =1) a > FULL OUTER JOIN > (select f1, f2 from table1 where f3 =2) b > on a.f1 = b.f1 > > (does not work) > select coalesce(a.f1, b.f1,c.f1) as col_1, b.f2 as col_2, c.f2 as col_3 > from > (select f1, f2 from table1 where f3 =1) a > FULL OUTER JOIN > (select f1, f2 from table1 where f3 =2) b > FULL OUTER JOIN > (select f1, f2 from table1 where f3 =3) c > on a.f1 = b.f1and a.f1 = c.f1 You need separate on clauses for each join: select ... from ((select f1, f2 from table1 where f3=1) afull outer join(select f1, f2 from table1 where f3=2) bon a.f1=b.f1)full outerjoin(select f1,f2 from table1 where f3=3) con a.f1=c.f1 should do it I think.
Thanks that did it.
Patrick Hatcher
Macys.Com
Legacy Integration Developer
415-932-0610 office
HatcherPT - AIM
Stephan Szabo
<sszabo@megazone23.big To: Patrick Hatcher <PHatcher@macys.com>
panda.com> cc: <pgsql-sql@postgresql.org>
Subject: Re: [SQL] What is Syntax for multiple FULL OUTER
03/19/200208:08 PM JOINS?
On Tue, 19 Mar 2002, Patrick Hatcher wrote:
> Is it possible to do a full outer join on 3 or more queries? I figured
out
> how to do 2, but I get an error message when trying to do three
>
>
> Example:
>
> (works)
> select coalesce(a.f1, b.f1) as col_1, b.f2 as col_2
> from
> (select f1, f2 from table1 where f3 =1) a
> FULL OUTER JOIN
> (select f1, f2 from table1 where f3 =2) b
> on a.f1 = b.f1
>
> (does not work)
> select coalesce(a.f1, b.f1,c.f1) as col_1, b.f2 as col_2, c.f2 as col_3
> from
> (select f1, f2 from table1 where f3 =1) a
> FULL OUTER JOIN
> (select f1, f2 from table1 where f3 =2) b
> FULL OUTER JOIN
> (select f1, f2 from table1 where f3 =3) c
> on a.f1 = b.f1and a.f1 = c.f1
You need separate on clauses for each join:
select ...
from ((select f1, f2 from table1 where f3=1) afull outer join(select f1, f2 from table1 where f3=2) bon a.f1=b.f1)full
outerjoin(select f1,f2 from table1 where f3=3) con a.f1=c.f1
should do it I think.