Sobes.tech
Junior — Middle

Izskaidrojiet, kas ir rekursīvās kopējās tabulas izteiksmes (CTE) un kā tās tiek izmantotas SQL vaicājumos

sobes.tech AI

Atbilde no AI

Rekursīvās Kopējās Tabulas Izteiksmes (CTE) ir īpaša veida pagaidu rezultātu kopas SQL, kas var atsaukties uz sevi pašu, lai veiktu rekursīvas vaicājumus. Tās ir noderīgas darbā ar hierarhiskām vai grafiskām datu struktūrām, piemēram, kategoriju koku pārlūkošanai, darbinieku organizēšanai pēc pakļautības utt.

Rekursīvā CTE sastāv no divām daļām:

  1. Pamatvaicājums — sākotnējais rindu kopums.
  2. Rekursīvais vaicājums — izmanto iepriekšējās iterācijas rezultātus, lai iegūtu nākamo datu līmeni.

Piemērs: iegūt visus pakļautos darbiniekus ar id = 1 hierarhijā.

WITH RECURSIVE Subordinates AS (
    SELECT id, manager_id, name
    FROM employees
    WHERE id = 1  -- pamatgadījums
  
    UNION ALL
  
    SELECT e.id, e.manager_id, e.name
    FROM employees e
    INNER JOIN Subordinates s ON e.manager_id = s.id  -- rekursīvais gadījums
)
SELECT * FROM Subordinates;

Šis vaicājums vispirms izvēlas darbinieku ar id=1, tad rekursīvi pievieno visus darbiniekus, kuru manager_id atbilst jau atrasto darbinieku id, līdz tiek pārbaudīta visa hierarhija.