როგორ განსხვავდება რეკურსიული და არარეკურსიული გამოხატულებები SQL-ის საერთო ცხრილის გამოხატულებებში (CTE)?
sobes.tech AI
პასუხი AI-სგან
SQL-ში საერთო მაგიდის გამოთქმა (CTE) დროებითი შედეგია, რომელიც შეიძლება გამოყენებულ იქნას მთავარი შეკითხვის ფარგლებში. არსებობს ორი ტიპის 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-ები საშუალებას აძლევენ ჯაჭვების და ჰიერჰარქიების შექმნას, ხოლო არა რეკურსიული მხოლოდ შეკითხვის სტრუქტურას გამარტივებს.