Junior — Middle
Обяснете какво представляват рекурсивните Общи Таблични Изрази (CTE) и как се използват в SQL заявки
sobes.tech AI
Отговор от AI
Рекурсивните изрази на обща таблица (CTE) са специален вид временни резултатни набори в SQL, които могат да се позовават сами на себе си за изпълнение на рекурсивни заявки. Те са полезни за работа с йерархични или графови структури от данни, например за обхождане на дърво с категории, организиране на служители по подчиненост и т.н.
Рекурсивният CTE се състои от две части:
- Базов заявка — началният набор от редове.
- Рекурсивна заявка — използва резултатите от предишната итерация, за да получи следващото ниво на данни.
Пример: получаване на всички подчинени служители с id = 1 в йерархията на служителите.
WITH RECURSIVE Subordinates AS (
SELECT id, manager_id, name
FROM employees
WHERE id = 1 -- базов случай
UNION ALL
SELECT e.id, e.manager_id, e.name
FROM employees e
INNER JOIN Subordinates s ON e.manager_id = s.id -- рекурсивен случай
)
SELECT * FROM Subordinates;
Този заявка първо избира служителя с id=1, след това рекурсивно добавя всички служители, чиито manager_id съвпада с id-то на вече намерените служители, докато не обходи цялата йерархия.