Sobes.tech
Junior — Middle

Rekursiv Ümumi Cədvəl İfadələri (CTE) nədir və SQL sorğularında necə istifadə olunur, izah edin

sobes.tech Süni İntellekt

AI-dan cavab

SQL-də Rekursiv Ümumi Cədvəl İfadələri (CTE) xüsusi növ müvəqqəti nəticə dəstləridir və özlərinə istinad edə bilərlər, bu da rekursiv sorğuların yerinə yetirilməsinə imkan verir. Onlar hierarxik və ya qrafik məlumat strukturları ilə işləmək üçün faydalıdır, məsələn, kateqoriya ağacını keçmək, işçiləri tabeçiliklərinə görə təşkil etmək və s.

Rekursiv CTE iki hissədən ibarətdir:

  1. Əsas sorğu — başlanğıc satır dəstidir.
  2. Rekursiv sorğu — əvvəlki iterasiyanın nəticələrindən istifadə edərək növbəti məlumat səviyyəsini əldə edir.

Misal: işçilər hierarxiyasında id = 1 olan bütün tabe işçiləri əldə etmək.

WITH RECURSIVE Subordinates AS (
    SELECT id, manager_id, name
    FROM employees
    WHERE id = 1  -- əsas hal
  
    UNION ALL
  
    SELECT e.id, e.manager_id, e.name
    FROM employees e
    INNER JOIN Subordinates s ON e.manager_id = s.id  -- rekursiv hal
)
SELECT * FROM Subordinates;

Bu sorğu əvvəlcə id=1 olan işçini seçir, sonra rekursiv olaraq bütün işçiləri əlavə edir, onların manager_id'si artıq tapılmış işçilərin id'sinə uyğun olan, bütün hierarxiyanı keçənə qədər.