Чӣ гуна фарқият дорад байни изҳороти рекурсивӣ ва ғайри рекурсивӣ дар изҳороти умумии ҷадвал (CTE) дар SQL?
sobes.tech AI
Ҷавоб аз AI
Ифодаи умумии ҷадвал (CTE) дар SQL натиҷаи муваққатӣ мебошад, ки дар дархости асосӣ истифода мешавад. Ду навъи CTE вуҷуд дорад: рекурсивӣ ва ғайр-рекурсивӣ.
-
CTE ғайр-рекурсивӣ: ин танҳо маҷмӯи муваққатии маълумот бо номи, ки аз ҷониби як дархост муайян карда шудааст. Он метавонад барои содда кардани дархостҳои мураккаб ё барои такрории истифодаи зердархостҳо истифода шавад.
-
CTE рекурсивӣ: ин CTE аст, ки ба худ ишора мекунад, ки имкон медиҳад амалиётҳои рекурсивӣ, ба монанди гузаштан аз ҳиерархияҳо ё графҳо.
Маслиҳати CTE ғайр-рекурсивӣ:
WITH RecentOrders AS (
SELECT * FROM Orders WHERE OrderDate > '2024-01-01'
)
SELECT * FROM RecentOrders WHERE CustomerID = 123;
Маслиҳати CTE рекурсивӣ (ҷустуҷӯи ҳамаи кормандони зердаст):
WITH RECURSIVE Subordinates AS (
SELECT EmployeeID, ManagerID, Name FROM Employees WHERE EmployeeID = 1 -- роҳбар
UNION ALL
SELECT e.EmployeeID, e.ManagerID, e.Name
FROM Employees e
INNER JOIN Subordinates s ON e.ManagerID = s.EmployeeID
)
SELECT * FROM Subordinates;
Тавре ки мебинем, CTE рекурсивӣ имкон медиҳад, ки занҷирҳо ва ҳиерархияҳоро бунёд кунанд, дар ҳоле ки CTE ғайр-рекурсивӣ танҳо сохтори дархостро содда мекунад.