Краткое сравнение Oracle SQL и ANSI SQL - Внешние соединения

ОГЛАВЛЕНИЕ

 

Внешние соединения

В ANSI SQL внешние объединения реализованы посредством расширенной формы предложения FROM:

  SELECT * FROM tab1 FULL JOIN tab2 ON col1=col2  - полное внешнее объединение
SELECT * FROM tab1 LEFT JOIN tab2 ON col1=col2 - полное левое объединение
SELECT * FROM tab1 RIGHT JOIN tab2 ON col1=col2 - полное правое объединение

В Oracle не реализовано расширенное предложение FROM для реализации внешних соединений (начальный уровень ANSI SQL этого не требует) как это сделано в ANSI. Однако реализован свой собственный синтаксис для получения левых и правых внешних объединений. Полные внешние объединения в Oracle не реализованы.

Для реализации левого внешнего объединения используется оператор (+) в предложении WHERE, который ставиться справа от столбца, по которому осуществляется соединение, справа от знака =. Аналогично для правого объединения оператор (+) ставиться справа от столбца слева от знака равенства.

  SELECT * FROM tab1 LEFT JOIN tab2 ON col1=col2  - аналогичен запросу:
SELECT * FROM tab,tab2 WHERE col1=col2 (+)

SELECT * FROM tab1 RIGHT JOIN tab2 ON col1=col2 - аналогичен запросу:
SELECT * FROM tab,tab2 WHERE col1 (+)=col2