Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

التنقل في التسلسل الهرمي

جزء من قسم ما وراء الأساسيات في رحلة SQL على Coddy. الدرس 21 من 27.

السبب الحقيقي لوجود CTEs递递ية: التنقل عبر علاقة parent/child مخزّنة في جدول واحد. افترض أن 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 اختياري يشير إلى فئة أخرى. أعد جميع الفئات التي تُعد descendants للفئة id = 1 (أي children وgrandchildren و…)، ولكن ليس الفئة 1 نفسها. أعد id وname، مرتبة حسب id.

جرّب بنفسك

WITH RECURSIVE descendants AS (
    -- المرساة: الأبناء المباشرون لـ id 1
    -- التكراري: أبناؤهم، إلخ.
)
SELECT id, name FROM descendants ORDER BY id
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس ما وراء الأساسيات

تدرّب بنفسك: Playground لـ SQL