Menu
CoddyTech

מעבר לאורך היררכיה

חלק מהיחידה מעבר ליסודות במסלול ה-SQL של Coddy. שיעור 21 מתוך 27.

הסיבה האמיתית לקיומן של טבלאות CTE רקורסיביות: מעבר לאורך קשר הורה/ילד המאוחסן בטבלה אחת. נניח שלטבלה employees יש עמודה manager_id שמצביעה בחזרה אל אותה טבלה:

WITH RECURSIVE chain AS (
    SELECT id, name, manager_id
    FROM employees WHERE id = 7              -- עוגן: העובד שממנו מתחילים
    UNION ALL
    SELECT e.id, e.name, e.manager_id
    FROM employees e
    JOIN chain c ON e.id = c.manager_id      -- רקורסיבי: מעבר למנהל
)
SELECT * FROM chain

בכל שלב ה־CTE מצורף בחזרה ל־employees, תוך עלייה של רמה אחת בעץ. הרקורסיה נעצרת באופן טבעי כשבשורה אין מנהל (JOIN לא מוצא התאמה).

challenge icon

אתגר

בינוני

הטבלאות והעמודות הזמינות:

  • categories: id, name, parent_id

לכל קטגוריה יש parent_id אופציונלי שמצביע על קטגוריה אחרת. יש להחזיר את כל הקטגוריות שהן צאצאיות של הקטגוריה id = 1 (הילדים שלה, הנכדים שלה, …), אבל לא את קטגוריה 1 עצמה. יש להחזיר את id ואת name, לפי הסדר של id.

נסו בעצמכם

WITH RECURSIVE descendants AS (
    -- עוגן: הילדים הישירים של id 1
    -- רקורסיבי: הילדים שלהם, וכן הלאה.
)
SELECT id, name FROM descendants ORDER BY id
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה מעבר ליסודות

תרגלו בעצמכם: SQL אונליין