On Mon, 24 Sep 2001, Alex Pilosov wrote: > On Sun, 23 Sep 2001, Stephan Szabo wrote: > > > On Sun, 23 Sep 2001, Alex Pilosov wrote: > > > > Postgres treats join syntax as an explicit definition of what order to > > joins in. So, I'd guess it sees the first as: do the LOJ and then join > > that to the separate table. > Yeah, I figure that's how it sees it, but that's pretty stupid from > performance reasons :P) > > It _should_ realize that left outer join only constricts join order > between two tables in outer join, and joins to all other tables should > still be treated normally. (see below) > > I'm going to CC this to -hackers, maybe someone will shed a light on the > internals of this. > > > And for right outer join (for example), those two queries would not > > be equivalent if I read the ordering correctly. The former syntax > > would mean outer first and then the inner, whereas the second would > > be inner first then the outer, and that could have different results. > True. But this is not right outer join, its a left outer join...:) > > Postgres should understand that left outer join does not constrict join > order...
But it can. If your condition was a joining between the other table and the right side of the left outer join, you'd have the same condition as a right outer join and the left side. The real condition I think is that you can join a non-explicitly joined table to the <x> side of an <x> outer join before the outer join but not to the other side. ---------------------------(end of broadcast)--------------------------- TIP 6: Have you searched our list archives? http://archives.postgresql.org