Junior — Middle
Vysvetlite, čo sú rekurzívne spoločné tabuľkové výrazy (CTE) a ako sa používajú v SQL dopytoch
sobes.tech AI
Odpoveď od AI
Rekurzívne Výrazy Spoločnej Tabuľky (CTE) sú špeciálnym typom dočasných výsledkových súborov v SQL, ktoré sa môžu odkazovať samy na seba na vykonávanie rekurzívnych dopytov. Sú užitočné pri práci s hierarchickými alebo grafickými dátovými štruktúrami, napríklad na prechádzanie stromom kategórií, organizovanie zamestnancov podľa podriadenosti atď.
Rekurzívny CTE pozostáva zo dvoch častí:
- Základný dopyt — počiatočný súbor riadkov.
- Rekurzívny dopyt — využíva výsledky predchádzajúcej iterácie na získanie ďalšej úrovne dát.
Príklad: získanie všetkých podriadených zamestnancov s id = 1 v hierarchii zamestnancov.
WITH RECURSIVE Subordinates AS (
SELECT id, manager_id, name
FROM employees
WHERE id = 1 -- základný prípad
UNION ALL
SELECT e.id, e.manager_id, e.name
FROM employees e
INNER JOIN Subordinates s ON e.manager_id = s.id -- rekurzívny prípad
)
SELECT * FROM Subordinates;
Táto otázka najskôr vyberie zamestnanca s id=1, potom rekurzívne pridá všetkých zamestnancov, ktorých manager_id zodpovedá id už nájdených zamestnancov, až kým neprejde celú hierarchiu.