Объединяет в Oracle: Какое поле на какой стороне знака =?
При объединении таблиц с помощью метода объединения таблиц ANSI-89 (старый) или ANSI-92 ("новый") имеет значение, с какой стороны вы размещаете поля из двух объединяемых таблиц.
Например, лучше ли сделать:
From
TABLE_1 A
Join
TABLE_2 B
on A.ID = B.ID
Или следующее лучше?
on B.ID = A.ID
Это просто эстетика? Или это влияет на работу соединений?
РЕДАКТИРОВАТЬ: Для дальнейшего уточнения, как насчет левых соединений? Например:
From
TABLE_1 A
Left Join
TABLE_2 B
on A.ID = B.ID
Это так же, как
on B.ID = A.ID
Однако при использовании ANSI-89 Where A.ID = B.ID (+)
это не то же самое, что Where B.ID = A.ID (+)
поскольку второй присоединяется к А БТО?
2 ответа
Это не имеет значения. Единственный раз, когда порядок имеет значение, это когда вы выполняете соединения LEFT и RIGHT OUTER, но все эти ключевые слова попадают перед ключевым словом ON.
=
оператор симметричный, поэтому a.id = b.id
точно так же, как b.id = a.id
, Лично я предпочитаю иметь поля из таблицы водителя (один в FROM
пункт) на левой стороне оператора, но это чисто эстетическое предпочтение.