CTEs باستخدام WITH
CTEs with WITH
CTEs باستخدام WITH
CTE اختصار لـ Common Table Expression. تكتبها بـWITH name AS (...)، ثم تستخدم name كأنها جدول مؤقت داخل الاستعلام. الهدف الأساسي هو القراءة: تقسيم استعلام معقد إلى خطوات مسماة.
لا تستخدم CTE فقط لأنها تبدو متقدمة. استخدمها عندما تجعل السؤال أوضح: أولاً احسب الطلبات المدفوعة، ثم اجمعها، ثم اعرض الأعلى.
مثال عملي
اسم paid_orders يشرح الخطوة الأولى. هذا أفضل من دفن الشرط في استعلام طويل.
CTEs المتكررة — Recursive CTEs
الـ CTE المتكررة تسمح لاستعلام بالإشارة إلى نفسه. هذا مفيد لهياكل الأشجار كالتصنيفات الهرمية أو الهياكل التنظيمية. الصيغة WITH RECURSIVE تضم جزأين:
- Anchor (نقطة البداية): استعلام عادي يُرجع الصف الأول.
- Recursive step (الخطوة المتكررة): يضم
UNION ALLويربط الجدول بالـ CTE نفسه.
لماذا UNION ALL لا UNION؟ UNION يزيل التكرار؛ في الأشجار كل عقدة تظهر مرة واحدة بعمق مختلف، فـALL أصح وأسرع. استخدم UNION (بدون ALL) فقط إذا كنت تعالج رسماً بيانياً (graph) وتريد ضمان عدم تكرار نفس العقدة من مسارات مختلفة.