Oracle Self Join
Что такое 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 программирования