Краткое сравнение Oracle SQL и ANSI SQL - Внешние соединения
ОГЛАВЛЕНИЕ
Страница 7 из 8
Внешние соединения
В 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