Julian Einwag - rockenstein AG <jein...@rockenstein.de> writes:
> So basically the following in ANSI syntax would be equivalent:

> select web_customer.id, web_contact.id 
> from web_customer left join web_contact on web_customer.id = web_contact.id 
> and 1 = web_contact.id

I've never been perfectly clear about how Oracle's syntax works either :-)

So if you were to leave off the (+) on that WHERE condition,
it would be equivalent to putting the condition into WHERE instead of
JOIN/ON in ANSI syntax, correct?

Also, at least in Postgres, the result of doing the latter would be that
you didn't get an outer join at all: the optimizer would conclude that
no null-extended row could get past the WHERE clause, so it would reduce
the left join to a plain join.  I assume Oracle's optimizer knows that
too.  So you need to (+)-mark *every* clause involving variables from
the inner side of the intended left join, or it won't work as desired.
Seems like a bit of a foot-gun ...

                        regards, tom lane

_______________________________________________
Spacewalk-devel mailing list
Spacewalk-devel@redhat.com
https://www.redhat.com/mailman/listinfo/spacewalk-devel

Reply via email to