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:
- Pamatvaicājums — sākotnējais rindu kopums.
- 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.