кодесурса
«SQL

SQL Self Join

script1adsense2code
script1adsense3code

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

Самостоятельное объединение - это объединение, в котором таблица объединяется сама с собой (что также называется унарными отношениями), особенно когда таблица имеет FOREIGN KEY, который ссылается на свой собственный PRIMARY KEY. Присоединение к самой таблице означает, что каждая строка таблицы объединяется с самим собой и со всеми остальными строками таблицы.

Самостоятельное объединение можно рассматривать как объединение двух копий одной и той же таблицы. Таблица на самом деле не копируется, но SQL выполняет команду, как если бы она была.

Синтаксис команды для присоединения таблицы к себе почти такой же, как и для объединения двух разных таблиц. Чтобы отличать имена столбцов друг от друга, используются псевдонимы для фактического имени таблицы, поскольку обе таблицы имеют одно и то же имя. Псевдонимы имен таблиц определены в предложении FROM оператора SELECT. Смотрите синтаксис:

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

Для этого урока мы использовали таблицу EMPLOYEE, которая имеет отношение один ко многим .

Код для создания таблицы EMPLOYEE

Код SQL:

CREATE TABLE employee(emp_id varchar(5) NOT NULL,
emp_name varchar(20) NULL,
dt_of_join date NULL,
emp_supv varchar(5) NULL,
CONSTRAINT emp_id PRIMARY KEY(emp_id) ,
CONSTRAINT emp_supv FOREIGN KEY(emp_supv) 
REFERENCESemployee(emp_id));

Структура таблицы


В таблице EMPLOYEE, показанной выше, emp_id является первичным ключом. emp_supv - это внешний ключ (это идентификатор сотрудника руководителя).

Если нам нужен список сотрудников и имена их руководителей, нам нужно присоединиться к таблице EMPLOYEE, чтобы получить этот список.

Одинарное отношение к работнику

Как сотрудники относятся к себе:

  • Сотрудник может сообщить другому сотруднику (руководителю).
  • Сотрудник может контролировать себя (т. Е. Ноль) для многих сотрудников (подчиненных).

У нас есть следующие данные в таблице РАБОТНИКА.

Приведенные выше данные показывают:

  • Руководитель Унната Найяра - Виджес Сетти
  • Анант Кумар и Винод Ратор также могут сообщить Вийесу Сетти.
  • Ракеш Патель и Мукеш Сингх находятся под надзором Уннита Найара.

Пример SQL SELF JOIN

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

Чтобы получить список сотрудников и их руководителей, использовался следующий оператор SQL:

Код SQL:

SELECT a.emp_id AS "Emp_ID",a.emp_name AS "Employee Name",
b.emp_id AS "Supervisor ID",b.emp_name AS "Supervisor Name"
FROM employee a, employee b
WHERE a.emp_supv = b.emp_id;

Выход:

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

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

Упражнения по SQL

Хотите улучшить вышеуказанную статью? Вносите свои заметки / комментарии / примеры через Disqus.

Предыдущий: Присоединить стол к себе
Далее: Объединение таблиц через ссылочную целостность

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


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code