انتقل إلى محتوى الدرس

Traversing Trees and Date Series استعراض الأشجار وتوليد السلاسل

تعلّم التعبيرات الجدولية الشائعة WITH والاستعلامات العودية في MySQL بأسلوب MySQL 8 الحديث مع أمثلة استعلامات SQL وتطبيقات تفاعلية.
1 صفوف تعليمية
MySQL
8 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

في تطبيقات الإنتاج الفعلية، يحل WITH RECURSIVE مشكلتين شهيرتين كانتا تتطلبان حلقات برمجية معقدة في لغة التطبيق أو جداول مساعدة:

  • استعراض الأشجار الهرمية: تتبّع الهياكل الإدارية (manager_id) أو شجرة التصنيفات المتداخلة (parent_id) من الجذر حتى أعمق مستوى مع حساب رقم المستوى depth_level.
  • توليد السلاسل الزمنية المتصلة: إنشاء سلسلة تواريخ يومية متكاملة لربطها عبر LEFT JOIN بجدول المبيعات بحيث تظهر الأيام الخالية من المبيعات بقيمة صفر بدلاً من اختفائها.
SQL
-- Traverse an employee organization hierarchy from CEO down
WITH RECURSIVE org_chart AS (
  SELECT emp_id, emp_name, manager_id, 1 AS tree_level
  FROM employees WHERE manager_id IS NULL
  UNION ALL
  SELECT e.emp_id, e.emp_name, e.manager_id, oc.tree_level + 1
  FROM employees AS e
  INNER JOIN org_chart AS oc ON e.manager_id = oc.emp_id
)
SELECT emp_id, emp_name, manager_id, tree_level
FROM org_chart ORDER BY tree_level, emp_id;