Junior — Middle
Ներկայացրեք, թե ինչ են ռեկուրսիվ ընդհանուր աղյուսակային արտահայտությունները (CTE) և ինչպես են դրանք օգտագործվում SQL հարցումներում
sobes.tech AI
Պատասխան AI-ից
Կրկնվող Ընդհանուր Թեյբլի Հայտարարություններ (CTE) — դա SQL-ում հատուկ տեսակի ժամանակավոր արդյունքների հավաքածու է, որը կարող է հղում կատարել ինքն իրեն՝ կատարելու համար ռեկուրսիվ հարցումներ։ Դրանք օգտակար են հիերարխիկ կամ գրաֆիկ տվյալների կառուցվածքների հետ աշխատելու համար, օրինակ՝ կատեգորիաների ծառը անցնելու, աշխատակիցների ենթակայության կարգավորելու և այլն:
Ռեկուրսիվ CTE-ն բաղկացած է երկու մասից.
- Հիմնական հարցում — սկզբնական տողերի հավաքածու:
- Ռեկուրսիվ հարցում — օգտագործում է նախորդ կրկնության արդյունքները՝ ստանալու հաջորդ տվյալների մակարդակը:
Օրինակ՝ ստանալ բոլոր ենթակայ աշխատակիցները՝ id=1 աշխատակցի համար:
WITH RECURSIVE Subordinates AS (
SELECT id, manager_id, name
FROM employees
WHERE id = 1 -- հիմք
UNION ALL
SELECT e.id, e.manager_id, e.name
FROM employees e
INNER JOIN Subordinates s ON e.manager_id = s.id -- ռեկուրսիվ
)
SELECT * FROM Subordinates;
Այս հարցումը առաջինը ընտրում է id=1 աշխատողին, ապա ռեկուրսիվ կերպով ավելացնում է բոլոր այն աշխատակիցներին, որոնց manager_id-ն համապատասխանում է արդեն հայտնաբերված աշխատակիցների id-ին, մինչև ամբողջ հիերարխիան անցնելը։