Классика баз данных - статьи

       

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


В 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



Содержание раздела