Найти тему

SELF JOIN

SELF JOIN в SQL используется для объединения таблицы с самой собой. Это может быть полезно, когда вам нужно сравнить данные из одной таблицы с данными из той же таблицы.

Пример использования SELF JOIN:

Предположим, у нас есть таблица "employees" с колонками id, name и manager_id, где manager_id указывает на id менеджера этого сотрудника. Мы хотим вывести информацию о каждом сотруднике и его менеджере. Для этого мы можем использовать SELF JOIN:

```sql
SELECT
e.name AS employee, m.name AS manager
FROM employees e
JOIN employees m ON e.manager_id =
m.id;
```

В этом примере мы делаем JOIN таблицы employees с самой собой по условию e.manager_id =
m.id. Мы выбираем имена сотрудника (e.name) и его менеджера (m.name).

SELF JOIN может быть также использован для рекурсивных запросов, например, если нам нужно найти всех подчиненных данного менеджера.

```sql
WITH RECURSIVE employee_hierarchy AS (
SELECT id, name, manager_id
FROM employees
WHERE id = 1
UNION ALL
SELECT
e.id, e.name, e.manager_id
FROM employees e
JOIN employee_hierarchy eh ON e.manager_id =
eh.id
)
SELECT *
FROM employee_hierarchy;
```

Здесь мы используем рекурсивный CTE (Common Table Expression) для построения иерархии подчиненных всех уровней для данного менеджера.

SELF JOIN - позволяет нам не только сравнивать данные из одной таблицы с данными из той же таблицы, но и делать рекурсивные запросы для построения иерархий данных.