I was wondering if this:
select *
from tableA natural join tableB,tableC natural join tableD;
is equivalent to :
select *
from (((tableA natural join tableB),tableC),tableD) natural join tableD;
Is the from clause left associative?
I was wondering if this:
select *
from tableA natural join tableB,tableC natural join tableD;
is equivalent to :
select *
from (((tableA natural join tableB),tableC),tableD) natural join tableD;
Is the from clause left associative?
I believe it is equivalent to:
select *
from (tableA natural join TableB) cross join
(tableC natural join TableD)
This is based on the documentation:
Previously, the comma operator (,) and JOIN both had the same precedence, so the join expression t1, t2 JOIN t3 was interpreted as ((t1, t2) JOIN t3). Now JOIN has higher precedence, so the expression is interpreted as (t1, (t2 JOIN t3)). This change affects statements that use an ON clause, because that clause can refer only to columns in the operands of the join, and the change in precedence changes interpretation of what those operands are.