Sobes.tech
Junior — Middle

SQL-də ümumi cədvəl ifadələrində (CTE) rekursiv və rekursiv olmayan ifadələr necə fərqlənir?

sobes.tech Süni İntellekt

AI-dan cavab

SQL-də Ümumi Cədvəl İfadəsi (CTE) əsas sorğuda istifadə oluna bilən müvəqqəti nəticədir. İki növ CTE mövcuddur: rekursiv və rekursiv olmayan.

  • Rekursiv olmayan CTE: sadəcə bir sorğu ilə müəyyən edilən adlandırılmış müvəqqəti məlumat dəstidir. Çətin sorğuları sadələşdirmək və ya alt sorğuları təkrar istifadə etmək üçün istifadə edilə bilər.

  • Rekursiv CTE: özünə istinad edən və məsələn, hierarxiyaları və ya qrafikləri keçmək kimi rekursiv əməliyyatları yerinə yetirməyə imkan verən CTE-dir.

Rekursiv olmayan CTE nümunəsi:

WITH RecentOrders AS (
    SELECT * FROM Orders WHERE OrderDate > '2024-01-01'
)
SELECT * FROM RecentOrders WHERE CustomerID = 123;

Rekursiv CTE nümunəsi (bütün tabe olan işçiləri tapmaq):

WITH RECURSIVE Subordinates AS (
    SELECT EmployeeID, ManagerID, Name FROM Employees WHERE EmployeeID = 1 -- rəhbər
    UNION ALL
    SELECT e.EmployeeID, e.ManagerID, e.Name
    FROM Employees e
    INNER JOIN Subordinates s ON e.ManagerID = s.EmployeeID
)
SELECT * FROM Subordinates;

Bu şəkildə, rekursiv CTE-lər zəncirlər və hierarxiyalar qurmağa imkan verir, rekursiv olmayanlar isə sadəcə sorğunun quruluşunu sadələşdirir.