Sobes.tech
Junior — Middle

გაამარტეთ, რა არის რეკურსიული საერთო მაგიდის გამოთქმები (CTE) და როგორ გამოიყენება ისინი SQL-სკრიპტებში

sobes.tech AI

პასუხი AI-სგან

რეკურსიული საერთო მაგიდის გამოთქმები (CTE) არის სპეციალური ტიპის დროებითი შედეგების ნაკრები SQL-ში, რომელიც შეიძლება მიმართოს საკუთარ თავს, რათა შეასრულოს რეკურსიული შეკითხვები. ისინი სასარგებლოა ჰიერჰარქიული ან გრაფიკული მონაცემთა სტრუქტურების სამუშაოდ, მაგალითად, კატეგორიების ხის გადალახვა, თანამშრომლების ორგანიზება დაქვემდებარების მიხედვით და ა.შ.

რეკურსიული CTE შედგება ორი ნაწილიდან:

  1. ძირითადი შეკითხვა — საწყისი სვეტების ნაკრები.
  2. რეკურსიული შეკითხვა — იყენებს წინამორბედი იტერაციის შედეგებს, რათა მიიღოს შემდეგი მონაცემთა დონე.

მაგალითი: ყველა დაქვემდებარებული თანამშრომლის მიღება, რომელთა 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-ს, სანამ არ გაივლის მთელ ჰიერჰარქიას.