Sobes.tech
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:

  1. Alap lekérdezés — kezdeti sorok halmaza.
  2. 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.