Sobes.tech
Junior — Middle

SQLda umumiy jadval ifodalarida (CTE) rekursiv va rekursiv bo'lmagan ifodalar qanday farq qiladi?

sobes.tech AI

AIdan javob

SQL'da Umumiy Jadval Ifodasi (CTE) asosiy so'rovda ishlatiladigan vaqtinchalik natijadir. Ikki turdagi CTE mavjud: rekursiv va rekursiv bo'lmagan.

  • Rekursiv bo'lmagan CTE: bu shunchaki nomlangan vaqtinchalik ma'lumotlar to'plami bo'lib, bitta so'rov bilan aniqlanadi. U murakkab so'rovlarni soddalashtirish yoki subso'rovlarni qayta ishlatish uchun ishlatilishi mumkin.

  • Rekursiv CTE: bu o'ziga murojaat qiladigan CTE bo'lib, rekursiv operatsiyalarni bajarishga imkon beradi, masalan, hierarxiyalar yoki grafiklarni yurish.

Rekursiv bo'lmagan CTE misoli:

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

Rekursiv CTE misoli (barcha bo'ysunuvchilarni topish):

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

Shu tarzda, rekursiv CTE'lar zanjirlar va hierarxiyalarni qurishga imkon beradi, rekursiv bo'lmaganlar esa so'rov tuzilmasini soddalashtiradi.