Menu
Coddy logo textTech

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

חלק מהיחידה מעבר ליסודות במסלול ה-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 אונליין