Что вы понимаете под Self Join? Приведите примеры.
Self Join — это соединение таблицы с самой собой. Используется, когда нужно сравнить строки одной таблицы или найти связи внутри неё.
Особенности:
Таблица упоминается дважды с разными алиасами.
Логически воспринимается как "две разные таблицы", хотя фактически одна.
Применяется для иерархий, поиска связей, сравнения строк.
Примеры
1. Иерархия сотрудников (менеджер — подчинённый)
Есть таблица employees:
id
name
manager_id
1
Иван
NULL
2
Анна
1
3
Пётр
1
4
Ольга
2
Запрос, чтобы показать сотрудника и его менеджера:
SELECT e.name AS employee,
m.name AS manager
FROM employees e
LEFT JOIN employees m
ON e.manager_id = m.id;Результат:
employee
manager
Иван
NULL
Анна
Иван
Пётр
Иван
Ольга
Анна
2. Поиск "дубликатов" по какому-то полю
Например, хотим найти сотрудников с одинаковыми именами:
3. Сравнение значений в одной таблице
Например, у нас таблица flights с городами отправления и прибытия. Найдём "обратные рейсы":
Last updated
Was this helpful?