Re:

From: Waldemar Bergstreiser <littlesuspense(at)web(dot)de>
To: Greg Stark <gsstark(at)mit(dot)edu>
Cc: pgsql-general(at)postgresql(dot)org, Scott Marlowe <scott(dot)marlowe(at)gmail(dot)com>
Subject: Re:
Date: 2009-06-30 11:14:10
Message-ID: 1744923522@web.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

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

The equal expression would be like this:

select * from a
left outer join (b left outer join c on (b.c_id = c.id) ) on (a.b_id = b.id)
left outer join (d left outer join f on (d.f_id = f.id) ) on (a.d_id = d.id)

and that is a double length of original SQL and has not very clear syntax in my opinion.
Additionally it can be very funny if we try to append a join conditions like "c.iso = d.iso"

> You can parenthesize it different ways but I think the result in this
> case is actually the same.
>

I'm not sure.

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

and if I have a row in table C where c.id is null? A don't know.

I found a good explanation about informix outer joins.

http://savage.net.au/SQL/outer-joins.html

Please take a look at that.

________________________________________________________________
Neu: WEB.DE Doppel-FLAT mit Internet-Flatrate + Telefon-Flatrate
für nur 19,99 Euro/mtl.!* http://produkte.web.de/go/02/

Responses

  • Re: at 2009-06-30 17:22:23 from Erik Jones
  • Re: at 2009-06-30 20:37:11 from Sam Mason

Browse pgsql-general by date

  From Date Subject
Next Message Nathaniel 2009-06-30 11:24:07 Setting up spatial index
Previous Message A. Kretschmer 2009-06-30 10:15:02 Re: Am I in intransaction or in autocommit mode?