Разместите ваше редактирование, это всего лишь случай знания неявного приоритета.
select * from table1
inner join table3
inner join table2 on table3.key = table2.fkey on table1.key = table2.otherkey
совпадает с
select * from
table1 inner join
(table3 inner join table2 on table3.key = table2.fkey)
on table1.key = table2.otherkey
, что, надеюсь, имеет больше смысла. Все, что я сделал здесь, это добавил круглые скобки.
Первое объединение, от table3
до table2
, концептуально говоря, создает промежуточную таблицу со всеми столбцами из обоих. table1
затем присоединяется к этому, используя второе предложение on
, которое вы видите.