Junior — Middle
გაამარტეთ, რა არის რეკურსიული საერთო მაგიდის გამოთქმები (CTE) და როგორ გამოიყენება ისინი SQL-სკრიპტებში
sobes.tech AI
პასუხი AI-სგან
რეკურსიული საერთო მაგიდის გამოთქმები (CTE) არის სპეციალური ტიპის დროებითი შედეგების ნაკრები SQL-ში, რომელიც შეიძლება მიმართოს საკუთარ თავს, რათა შეასრულოს რეკურსიული შეკითხვები. ისინი სასარგებლოა ჰიერჰარქიული ან გრაფიკული მონაცემთა სტრუქტურების სამუშაოდ, მაგალითად, კატეგორიების ხის გადალახვა, თანამშრომლების ორგანიზება დაქვემდებარების მიხედვით და ა.შ.
რეკურსიული CTE შედგება ორი ნაწილიდან:
- ძირითადი შეკითხვა — საწყისი სვეტების ნაკრები.
- რეკურსიული შეკითხვა — იყენებს წინამორბედი იტერაციის შედეგებს, რათა მიიღოს შემდეგი მონაცემთა დონე.
მაგალითი: ყველა დაქვემდებარებული თანამშრომლის მიღება, რომელთა id=1 არის თანამშრომლის ჰიერჰარქიაში.
WITH RECURSIVE Subordinates AS (
SELECT id, manager_id, name
FROM employees
WHERE id = 1 -- ძირითადი შემთხვევა
UNION ALL
SELECT e.id, e.manager_id, e.name
FROM employees e
INNER JOIN Subordinates s ON e.manager_id = s.id -- რეკურსიული შემთხვევა
)
SELECT * FROM Subordinates;
ეს შეკითხვა პირველ რიგში ირჩევს თანამშრომელს, რომლის id=1, შემდეგ რეკურსიულად დამატებს ყველა თანამშრომელს, რომლის manager_id-ც ემთხვევა უკვე მოძებნილის id-ს, სანამ არ გაივლის მთელ ჰიერჰარქიას.