On Tue, Jun 30, 2009 at 9:58 AM, Waldemar Bergstreiser<littlesuspense@xxxxxx> wrote: >> > -- c *= b *= a =* d =* f >> > select * from a, outer( b, outer c), outer (d, outer f ) >> > where a.b_id = b.id and b.c_id = c.id and a.d_id = d.id and d.f_id = f.id; >> >> from a full join b on (a.id=b.id) >> full join c on (b.id=c.id) >> full join d >> > > I guess, you don't get it. Probably so I don't get it either. by *= do you mean the Oracle-style outer join? in which case why is this not just select * from a, left outer join b on (a.b_id = b.id) left outer join c on (b.c_id = c.id) left outer join d on (a.d_id = d.id) left outer join f on (d.f_id = f.id) You can parenthesize it different ways but I think the result in this case is actually the same. > select * from a left outer join b on (a.b_id=b.id) .... > > But I don't see any clear way to specify that table C should be outer joined only if we got a row from table B. Well that would be the default since if you get no row from b b.c_id will be null. -- greg http://mit.edu/~gsstark/resume.pdf -- Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-general