кодесурса
«SQLite

Oracle Self Join

script1adsense2code
script1adsense3code

Что такое Self Join в Oracle?

  • Самостоятельное соединение - это соединение, в котором таблица соединяется сама с собой.
  • Присоединение к самой таблице означает, что каждая строка таблицы объединяется с самим собой и со всеми остальными строками таблицы.
  • Таблица появляется дважды в предложении FROM и сопровождается псевдонимами таблицы, которые определяют имена столбцов в условии соединения.
  • Самостоятельное объединение можно рассматривать как объединение двух копий одной и той же таблицы. Таблица на самом деле не копируется, но SQL выполняет команду, как если бы она была.
  • Для выполнения самостоятельного объединения Oracle Database объединяет и возвращает строки таблицы, которые удовлетворяют условию соединения.

Синтаксис:

 ВЫБЕРИТЕ имя.column_name, b.column_name ... 
ИЗ таблицы 1 а, таблицы 1 б 
ГДЕ a.common_filed = b.common_field;

Пример: Oracle Self Join

В следующем запросе SQL используется самостоятельное соединение, чтобы вернуть имя каждого сотрудника вместе с именем руководителя сотрудника.

Пример таблицы: сотрудники


Код SQL:

SQL> SELECT e1.last_name||' works for '||e2.last_name
  2     "Employees and Their Managers"
  3     FROM employees e1, employees e2
  4     WHERE e1.manager_id = e2.employee_id;

Пример вывода:

 Сотрудники и их менеджеры
----------------------------------
Смит работает на Камбро
Озер работает на Камбро
Кумар работает на Камбро
Фокс работает на Камбро
Блум работает на Камбро
Бейтс работает на Камбро
Hunold работает на Де Хаана
Вишней работает на Эрразуриз
Марвинс работает на Эрразуриз
Ли работает на Эрразуриз
Грин работает на Эрразуриз
...

Самостоятельное соединение с помощью предложения ON

Предложение ON может использоваться для объединения столбцов с разными именами в одной и той же таблице или в другой таблице. В следующем запросе SQL мы использовали employee_id и manager_id в качестве соединяющих столбцов. Запрос возвращает имя менеджера каждого сотрудника.

Синтаксис:

 ВЫБЕРИТЕ имя.column_name, b.column_name ... 
ИЗ таблицы 1 ПРИСОЕДИНЯЙСЯ table1 b 
ON (a.common_filed = b.common_field); 

Код SQL:

SQL> SELECT e1.last_name "Worker", e2.last_name "Manager"
  2  FROM employees e1 JOIN employees e2
  3  ON  (e1.manager_id = e2.employee_id);

Пример вывода:

 Рабочий менеджер
------------------------- -----------
Смит Камбро
Озер Камбро
Кумар Камбро
Лиса Камбро
Блум Камбро
Бейтс Камбро
Хунольд Де Хаан
Вишней Эрразуриз
Марвинс Эрразуриз
Ли Эрразуриз
Грин Эрразуриз
Банда Эрразуриз
Анде Эрразуриз
Сарчанд Фрипп
Олсон Фрипп
Марлоу Фрипп
Деллингер Фрипп
Кабрио Фрипп
Булл Фрипп
Биссо Фрипп
Аткинсон Фрипп
... 

Примечание. Скобки вокруг соединяемых столбцов необязательны.

Выводы указанного оператора SQL, показанного здесь, взяты с использованием Oracle Database 11g Express Edition.

Смотрите также:

Предыдущий: ПОЛНОЕ НАРУЖНОЕ СОЕДИНЕНИЕ
Далее: CROSS JOIN

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code