Sobes.tech
Junior — Middle

როგორ განსხვავდება რეკურსიული და არარეკურსიული გამოხატულებები 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-ები საშუალებას აძლევენ ჯაჭვების და ჰიერჰარქიების შექმნას, ხოლო არა რეკურსიული მხოლოდ შეკითხვის სტრუქტურას გამარტივებს.