Sobes.tech
Junior — Middle

Ներկայացրեք, թե ինչ են ռեկուրսիվ ընդհանուր աղյուսակային արտահայտությունները (CTE) և ինչպես են դրանք օգտագործվում SQL հարցումներում

sobes.tech AI

Պատասխան AI-ից

Կրկնվող Ընդհանուր Թեյբլի Հայտարարություններ (CTE) — դա SQL-ում հատուկ տեսակի ժամանակավոր արդյունքների հավաքածու է, որը կարող է հղում կատարել ինքն իրեն՝ կատարելու համար ռեկուրսիվ հարցումներ։ Դրանք օգտակար են հիերարխիկ կամ գրաֆիկ տվյալների կառուցվածքների հետ աշխատելու համար, օրինակ՝ կատեգորիաների ծառը անցնելու, աշխատակիցների ենթակայության կարգավորելու և այլն:

Ռեկուրսիվ CTE-ն բաղկացած է երկու մասից.

  1. Հիմնական հարցում — սկզբնական տողերի հավաքածու:
  2. Ռեկուրսիվ հարցում — օգտագործում է նախորդ կրկնության արդյունքները՝ ստանալու հաջորդ տվյալների մակարդակը:

Օրինակ՝ ստանալ բոլոր ենթակայ աշխատակիցները՝ 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-ին, մինչև ամբողջ հիերարխիան անցնելը։