Re: Nested JOINs

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: Nested JOINs
Дата
Msg-id 25972.997999951@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Re: Nested JOINs  ("Josh Berkus" <josh@agliodbs.com>)
Список pgsql-sql
"Josh Berkus" <josh@agliodbs.com> writes:
> Second, you can't alias a JOINed set of tables;

Actually you can, according to my reading of SQL92:
        <table reference> ::=               <table name> [ [ AS ] <correlation name>                   [ <left paren>
<derivedcolumn list> <right paren> ] ]             | <derived table> [ AS ] <correlation name>                   [
<leftparen> <derived column list> <right paren> ]             | <joined table>
 
        <derived table> ::= <table subquery>
        <table subquery> ::= <subquery>
        <subquery> ::= <left paren> <query expression> <right paren>
        <query expression> ::=               <non-join query expression>             | <joined table>
        <joined table> ::=               <cross join>             | <qualified join>             | <left paren> <joined
table><right paren>
 
        <qualified join> ::=             <table reference> [ NATURAL ] [ <join type> ] JOIN               <table
reference>[ <join specification> ]
 

So a parenthesized <qualified join> is a <derived table> and may
be followed by [ AS ] <correlation name>.

7.1 gets this right.  7.0's very preliminary implementation of JOIN
syntax did not.  (It had a number of other bugs too, IIRC.)

The spec's grammar is horribly badly written: it's ambiguous whether the
parentheses should be parsed as part of a second-level <joined table>
which would imply that a correlation name would NOT be accepted.
It took a fair amount of work to derive a grammar that was unambiguous
and still accepted everything...
        regards, tom lane


В списке pgsql-sql по дате отправления:

Предыдущее
От: Peter Eisentraut
Дата:
Сообщение: Re: Interval FAQ - please review
Следующее
От: Horst Herb
Дата:
Сообщение: Fwd: how to use record type