Что вы понимаете под Self Join? Приведите примеры.
Self Join (самосоединение) в реляционных базах данных представляет собой операцию объединения таблицы с самой собой. Это полезный метод, когда внутри одной таблицы есть столбцы, значения которых могут быть связаны с другими значениями в той же таблице.
Вот пример самосоединения на простой таблице "Employees" для организации, где у каждого сотрудника есть имя и менеджер (представленный в той же таблице посредством внешнего ключа):
CREATE TABLE Employees (
EmployeeID INT PRIMARY KEY,
Name VARCHAR(100),
ManagerID INT, -- внешний ключ, ссылается на EmployeeID той же таблицы
FOREIGN KEY (ManagerID) REFERENCES Employees(EmployeeID)
);
INSERT INTO Employees (EmployeeID, Name, ManagerID) VALUES
(1, 'John', 3),
(2, 'Alice', 3),
(3, 'Bob', NULL),
(4, 'Charlie', 2),
(5, 'David', 2);
Теперь, чтобы найти имя сотрудника и имя его менеджера, можно использовать самосоединение:
SELECT e1.Name AS Employee, e2.Name AS Manager
FROM Employees e1
JOIN Employees e2 ON e1.ManagerID = e2.EmployeeID;
Этот запрос объединяет таблицу "Employees" саму с собой по условию, что ManagerID
сотрудника равен EmployeeID
его менеджера. Результат будет содержать имена сотрудников и их менеджеров:
+----------+---------+
| Employee | Manager |
+----------+---------+
| John | Bob |
| Alice | Bob |
| Bob | NULL |
| Charlie | Alice |
| David | Alice |
+----------+---------+
Таким образом, Self Join позволяет использовать данные из одной и той же таблицы, представляя ее разные экземпляры для получения информации о взаимосвязанных записях.
Last updated
Was this helpful?