Рекурсивные запросы с CTE в SQL



Hазберем мощный инструмент — рекурсивные запросы с использованием CTE. Эта техника позволяет работать с иерархическими данными или решать задачи, требующие итераций:



Рекурсивный CTE — это временная таблица, которая ссылается на саму себя, чтобы обрабатывать данные поэтапно.



Предположим, у нас есть таблица employees с колонками: id, name, manager_id.

Сначала выбираем данные о целевом менеджере:

WITH RECURSIVE EmployeeHierarchy AS (

SELECT id, name, manager_id

FROM employees

WHERE name = 'Alice'




Теперь связываем подчиненных менеджера с данными базового уровня:

    UNION ALL

SELECT e.id, e.name, e.manager_id

FROM employees e

INNER JOIN EmployeeHierarchy eh

ON e.manager_id = eh.id

)




Наконец, извлекаем всю построенную иерархию:

SELECT * FROM EmployeeHierarchy;




Результат:

Если у Alice есть прямые и косвенные подчиненные, запрос вернет их всех.



🔥 Рекурсивные CTE позволяют элегантно работать с иерархиями и выполнять сложные итеративные операции. Осваивая их, вы сможете эффективно решать задачи, которые раньше казались сложными или даже невозможными в SQL.



➡️ SQL Ready | #практика