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

  1. Základný dopyt — počiatočný súbor riadkov.
  2. 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.