Ответ
SELF JOIN — это операция соединения таблицы с самой собой. Он используется, когда необходимо сравнить или связать строки в пределах одной таблицы, обычно для представления иерархических или реляционных данных внутри неё.
Типичный пример: Таблица employees с ссылкой на менеджера.
CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR(100),
manager_id INT REFERENCES employees(id)
);
-- SELF JOIN для получения сотрудников и их менеджеров
SELECT
emp.name AS employee_name,
mgr.name AS manager_name
FROM employees emp
LEFT JOIN employees mgr ON emp.manager_id = mgr.id;
| Результат: | employee_name | manager_name |
|---|---|---|
| Alice | Bob | |
| Bob | NULL | |
| Charlie | Bob |
Ключевые аспекты SELF JOIN:
- Обязательное использование алиасов: Разные алиасы (
emp,mgr) необходимы, чтобы различать два "экземпляра" одной таблицы. - Типы JOIN: Можно использовать
INNER JOIN,LEFT JOIN,RIGHT JOINилиFULL JOINв зависимости от задачи. - Основные сценарии использования:
- Иерархические данные (сотрудники-менеджеры, категории товаров).
- Поиск пар строк, удовлетворяющих условию (например, найди сотрудников с одинаковой зарплатой:
SELECT a.name, b.name FROM employees a JOIN employees b ON a.salary = b.salary AND a.id < b.id). - Вычисление на основе сравнения строк (например, найти сотрудников, которые зарабатывают больше своего менеджера).