Junior — Middle
Magyarázza el, hogy mik az ismétlődő közös táblázat kifejezések (CTE) és hogyan használják őket SQL-lekérdezésekben
sobes.tech MI
Válasz az MI-től
A Rekurzív Common Table Expressions (CTE) egy speciális ideiglenes eredményhalmaz típus SQL-ben, amely saját magára hivatkozhat, így rekurzív lekérdezéseket hajthat végre. Hasznos hierarchikus vagy gráf alapú adatszerkezetekkel való munkához, például kategóriafák bejárásához, alkalmazottak alárendeltség szerinti szervezéséhez stb.
Egy rekurzív CTE két részből áll:
- Alap lekérdezés — kezdeti sorok halmaza.
- Rekurzív lekérdezés — az előző iteráció eredményeit felhasználva a következő adat szintet szerzi meg.
Példa: minden alárendelt alkalmazott lekérése az alkalmazottak hierarchiájában, ahol az id = 1.
WITH RECURSIVE Subordinates AS (
SELECT id, manager_id, name
FROM employees
WHERE id = 1 -- alap eset
UNION ALL
SELECT e.id, e.manager_id, e.name
FROM employees e
INNER JOIN Subordinates s ON e.manager_id = s.id -- rekurzív eset
)
SELECT * FROM Subordinates;
Ez a lekérdezés először kiválasztja az id=1 alkalmazottat, majd rekurzívan hozzáadja az összes olyan alkalmazottat, akinek a manager_id-je megegyezik a már megtalált alkalmazottak id-jével, egészen a teljes hierarchia bejárásáig.