Peter Eisentraut <[EMAIL PROTECTED]> writes:
> ISTM that correlation names aren't allowed after joined tables in the
> first place.

>          <table reference> ::=
>                 <table name> [ [ AS ] <correlation name>
>                     [ <left paren> <derived column list> <right paren> ] ]
>               | <derived table> [ AS ] <correlation name>
>                     [ <left paren> <derived column list> <right paren> ]
>               | <joined table>

>          <joined table> ::=
>                 <cross join>
>               | <qualified join>
>               | <left paren> <joined table> <right paren>

Keep looking:

         <derived table> ::= <table subquery>

         <table subquery> ::= <subquery>

         <subquery> ::= <left paren> <query expression> <right paren>

         <query expression> ::=
                <non-join query expression>
              | <joined table>

So you can write
        SELECT A.* FROM (A NATURAL JOIN B) J
but in
        SELECT A.* FROM A NATURAL JOIN B J
the J will be taken as an alias for B not for the join.  If they allowed
an alias clause on an unparenthesized <joined table>, the grammar would
be ambiguous...

                        regards, tom lane

Reply via email to