Что означает знак ( + ) в предложении Oracle SQL WHERE? [дубликат]


Возможные Дубликаты:
Oracle: что делает (+) do в предложении WHERE?

рассмотрим упрощенный SQL-запрос ниже, в среде базы данных Oracle (хотя я не уверен, что он специфичен для Oracle):

SELECT 
   t0.foo, t1.bar
FROM
   FIRST_TABLE t0, SECOND_TABLE t1
WHERE
   t0.ID (+) = t1.ID;

что это (+) запись в WHERE предложения? Мне жаль, если это невежественный вопрос новичка, но это было очень трудно найти на Google или StackOverflow... потому что даже при использовании кавычек поисковые системы видят знак " + " и, похоже, хотят рассматривать его как какую-то логическую директиву.

1 54

1 ответ:

это специфичная для Oracle нотация для внешнего соединения. Это означает, что он будет включать все строки из t1 и использовать нули в Столбцах t0, если в t0 нет соответствующей строки.

в стандартном SQL можно было бы написать:

SELECT t0.foo, t1.bar
  FROM FIRST_TABLE t0
 RIGHT OUTER JOIN SECOND_TABLE t1;

Oracle рекомендует больше не использовать эти соединения, если ваша версия поддерживает соединения ANSI (left / RIGHT JOIN):

Oracle рекомендует использовать синтаксис внешнего соединения предложения FROM, а не Oracle присоединиться к оператору. Внешние запросы соединения, использующие оператор Oracle join ( + ), подчиняются следующим правилам и ограничениям [...]