Sobes.tech
Junior — Middle

Explica ce sunt expresiile comune de tabel recursiv (CTE) și cum sunt utilizate în interogările SQL

sobes.tech AI

Răspuns de la AI

Expresiile comune de tabel recursive (CTE) sunt un tip special de seturi de rezultate temporare în SQL, care pot face referire la ele însele pentru a executa interogări recursive. Acestea sunt utile pentru lucrul cu structuri de date ierarhice sau grafice, de exemplu, pentru traversarea unui arbore de categorii, organizarea angajaților după subordonare etc.

Un CTE recursiv constă din două părți:

  1. Interogarea de bază — setul inițial de rânduri.
  2. Interogarea recursivă — utilizează rezultatele iterației anterioare pentru a obține nivelul următor de date.

Exemplu: obținerea tuturor angajaților subordonați cu id = 1 într-o ierarhie de angajați.

WITH RECURSIVE Subordinates AS (
    SELECT id, manager_id, name
    FROM employees
    WHERE id = 1  -- caz de bază
  
    UNION ALL
  
    SELECT e.id, e.manager_id, e.name
    FROM employees e
    INNER JOIN Subordinates s ON e.manager_id = s.id  -- caz recursiv
)
SELECT * FROM Subordinates;

Această interogare selectează mai întâi angajatul cu id=1, apoi adaugă recursiv toți angajații ale căror manager_id corespunde cu id-ul angajaților deja găsiți, până când parcurge întreaga ierarhie.