Tom Lane wrote:
=?ISO-8859-1?Q?Sebastian_B=F6ck?= <[EMAIL PROTECTED]> writes:

why is the last definition of a view not working, although the documentation says all three are equal?


The documentation says no such thing...

So I misinterpreted the following:

http://www.postgresql.org/docs/8.0/interactive/queries-table-expressions.html

that says:

FROM T1 CROSS JOIN T2 is equivalent to FROM T1, T2. It is also equivalent to FROM T1 INNER JOIN T2 ON TRUE



CREATE OR REPLACE VIEW not_working AS
        SELECT one.*
        FROM one.one, two.two
        JOIN join1 ON join1.id = one.id;


JOIN binds tighter than comma in FROM-lists, so that means

        FROM one.one CROSS JOIN (two.two JOIN join1 ON join1.id = one.id);

which of course is illegal because the JOIN/ON condition refers to
something that's not within the current JOIN.  Your preceding example
parenthesizes as

        FROM (one.one CROSS JOIN two.two) JOIN join1 ON join1.id = one.id;

which is OK.

Thanks for clarification

Sebastian

---------------------------(end of broadcast)---------------------------
TIP 8: explain analyze is your friend

Reply via email to