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

متسلسلة أرقام

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

لقد تعرفت على الكلمة المفتاحية WITH في قسم المبادئ الأساسية (Fundamentals) لتسمية الاستعلام الفرعي، والذي يُعرف أيضًا باسم CTE (تعبير الجدول المشترك). بينما يذهب الـ CTE الـ recursive خطوة إلى الأمام: حيث يسمح للاستعلام الفرعي بالإشارة إلى نفسه، مما يبني النتيجة سطرًا بسطر (row-by-row).

يولد أبسط إصدار تسلسلاً من الأرقام دون جدول أساسي. والشكل هو نفسه دائماً:

WITH RECURSIVE counter(n) AS (
    SELECT 1                              -- المرساة: الصف الابتدائي
    UNION ALL
    SELECT n + 1 FROM counter WHERE n < 5 -- التكراري: ابنِ التالي من الأخير
)
SELECT n FROM counter

اقرأها على النحو التالي: ابدأ بـ n = 1، ثم استمر في إضافة صفوف حيث يكون كل n هو n + 1 السابق، وتوقف عندما يتوقف شرط WHERE عن المطابقة. النتيجة هي 1, 2, 3, 4, 5.

يتم الربط بين جزأي الجسم باستخدام UNION ALL. الجزء الأول هو الـ anchor: السطور الأولية (seed rows). والجزء الثاني هو الـ recursive step: حيث يقوم بالاستعلام عن الـ CTE نفسه.

challenge icon

التحدي

سهل

اكتب CTE عودياً (recursive) باسم powers يتضمن عمودين:

  • i: فهرس التكرار، يبدأ من 1
  • p: الرقم 2 مرفوعاً للقوة i (أي 2، 4، 8، …)

توقف عندما تتجاوز قيمة p الرقم 1000. أرجع كلا العمودين، مرتبين تصاعدياً حسب i.

جرّب بنفسك

WITH RECURSIVE powers(i, p) AS (
    -- المرساة: i=1, p=2
    -- التكراري: i+1, p*2، حتى يصل p إلى 1000
)
SELECT i, p FROM powers ORDER BY i
quiz iconاختبر نفسك

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

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