Re: BUG #12000: "CROSS JOIN" not equivalent to ","
От | David G Johnston |
---|---|
Тема | Re: BUG #12000: "CROSS JOIN" not equivalent to "," |
Дата | |
Msg-id | 1416332559606-5827398.post@n5.nabble.com обсуждение исходный текст |
Ответ на | BUG #12000: "CROSS JOIN" not equivalent to "," (kunert@cms.hu-berlin.de) |
Ответы |
Re: BUG #12000: "CROSS JOIN" not equivalent to ","
|
Список | pgsql-bugs |
Dr. Andreas Kunert wrote > According to the documentation > http://www.postgresql.org/docs/9.3/static/queries-table-expressions.html > (7.2.1.1): > "FROM T1 CROSS JOIN T2 is equivalent to FROM T1, T2" > > However, in the following example the SQL-Query using "CROSS JOIN" works, > while the usage of "," results in an invalid reference: > > table1 a > , table1 b > left outer join table2 c on a.x = y and b.x = z; It does not say that: A, B JOIN C is equivalent to A CROSS JOIN B JOIN C The "," introduces lower precedence operator to the mix and so the B JOIN C is evaluated first and the corresponding "ON" clause can only refer to those two tables. In effect you are writing: FROM A, (B JOIN C) I personally find the use of "," in the FROM-clause to be poor form and its even worse if you decide to mix both "," and explicit JOIN clauses. If you want to make this be explained better feel free to provide suggestions; but I'd suggest you simply forget the fact that "FROM A, B" is even valid and just use the proper joining keywords instead. Given this does not work as far back at 9.0 I would say that it is not a bug. Nor do I believe it is particularly under-documented; its just complicated because of the mixing of two separate concepts. David J. -- View this message in context: http://postgresql.nabble.com/BUG-12000-CROSS-JOIN-not-equivalent-to-tp5827394p5827398.html Sent from the PostgreSQL - bugs mailing list archive at Nabble.com.
В списке pgsql-bugs по дате отправления: