Junior — Middle
Selgitage, mis on rekursiivsed ühiste tabelite avaldised (CTE) ja kuidas neid SQL-päringutes kasutatakse
sobes.tech AI
Vastus AI-lt
Rekursiivsed Ühiste Tabeli väljendid (CTE) on spetsiaalne ajutine tulemuste kogum SQL-is, mis võib viidata iseendale, võimaldades rekursiivseid päringuid. Need on kasulikud hierarhiliste või graafiliste andmestruktuuride töötamisel, näiteks kategooriate puu läbimiseks, töötajate korraldamiseks alluvuse järgi jne.
Rekursiivne CTE koosneb kahest osast:
- Põhivõte — algne ridade kogum.
- Rekursiivne võte — kasutab eelneva iteratsiooni tulemusi, et saada järgmise taseme andmeid.
Näide: saada kõik alluvad töötajad, kelle id = 1 organisatsioonis.
WITH RECURSIVE Subordinates AS (
SELECT id, manager_id, name
FROM employees
WHERE id = 1 -- põhijuhtum
UNION ALL
SELECT e.id, e.manager_id, e.name
FROM employees e
INNER JOIN Subordinates s ON e.manager_id = s.id -- rekursiivne juhtum
)
SELECT * FROM Subordinates;
See päring valib esmalt töötaja id=1, seejärel rekursiivselt lisab kõik töötajad, kelle manager_id vastab juba leitud töötajate id-le, kuni kogu hierarhia on läbi käidud.