شرح صفوف ومحتوى الفقرة
في تطبيقات الإنتاج الفعلية، يحل 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;