Re: FULL JOIN with 3 or more tables - Mailing list pgsql-sql

From Masaru Sugawara
Subject Re: FULL JOIN with 3 or more tables
Date
Msg-id 20020405000052.5991.RK73@sea.plala.or.jp
Whole thread Raw
In response to FULL JOIN with 3 or more tables  (Michael Adler <adler@glimpser.org>)
Responses Re: FULL JOIN with 3 or more tables
List pgsql-sql
On Wed, 3 Apr 2002 15:58:55 -0500 (EST)
Michael Adler <adler@glimpser.org> wrote:


> I can do full joins just fine on two tables at a time:
> 
> FROM t1 FULL JOIN t2 ON (t1.id = t2.id)
> 
> Now, how would I full joint in a third table?
> 
> FROM t1 FULL JOIN t2 ON (t1.id = t2.id) FULL JOIN t3 ON t1.id = t3.id
> 
> That previous line would not join together two rows from t2 and t3.


This topic is the same as the previous discussions(see the following URL).
It seems to be still impossible to merge all the tables by that query.


http://groups.google.com/groups?hl=en&threadm=3507.1006111223%40sss.pgh.pa.us&rnum=1&prev=/groups%3Fq%3DCOALESCE(t1.name,t2.name)%26hl%3Den%26selm%3D3507.1006111223%2540sss.pgh.pa.us%26rnum%3D1



But, if using a COALESCE(), you'll be able to merge. 

t1.id: 1,2,  4,5
t2.id: 1,  3,4
t3.id:   2,3,  5,6

SELECT t1.id AS id1, t2.id AS id2, t3.id AS id3 FROM t1 FULL JOIN t2 ON (t1.id = t2.id)      FULL JOIN t3 ON (t1.id =
t3.id);
id1 | id2 | id3
-----+-----+-----  1 |   1 |  2 |     |   2    |   3 |    |     |   3  4 |   4 |  5 |     |   5    |     |   6
(7 rows)
explain analyze
SELECT t.id1, t.id2 , t3.id AS id3 FROM (SELECT COALESCE(t1.id, t2.id) AS id12,                  t1.id AS id1, t2.id AS
id2        FROM t1 FULL JOIN t2 ON (t1.id = t2.id)      ) AS t FULL JOIN t3 ON (t.id12 = t3.id);
 
id1 | id2 | id3
-----+-----+-----  1 |   1 |  2 |     |   2    |   3 |   3    <-- being merged  4 |   4 |  5 |     |   5    |     |
6
(6 rows)


Regards,
Masaru Sugawara




pgsql-sql by date:

Previous
From: Bernd von den Brincken
Date:
Subject: Rvsd. / Re: Named column in a Function fails at ORDER BY (PgSQL 7.1)
Next
From: Jan Wieck
Date:
Subject: Re: Update in trigger