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.