NahdaAIنهضة
SQL Databases • المستوى الثالث • الدرس 3

أنواع الربط المتقدمة (RIGHT JOIN & FULL OUTER JOIN)

العودة لفهرس المستوى

أهداف الدرس

  • فهم آلية عمل RIGHT JOIN المتركزة على الجدول الأيمن.
  • دمج النواتج الشاملة بـ FULL OUTER JOIN لإرجاع كامل سجلات الأطراف.
  • محاكاة FULL OUTER JOIN في MySQL/SQLite باستخدام UNION.
  • دمج JOIN مع WHERE و GROUP BY و COUNT.

1. استكمال مخططات JOINs

تضمن هذه الاستعلامات عدم ضياع أي سجلات أثناء التدقيق والربط، حتى لو كانت البيانات مفقودة من أحد الأطراف في قاعدة البيانات.

sql
-- RIGHT JOIN: كل صفوف الجدول الأيمن (orders)
SELECT u.name, o.total_amount
FROM users u
RIGHT JOIN orders o ON u.id = o.user_id;
-- المستخدمون الذين لديهم طلبات
-- الطلبات التي ليس لها مستخدم (user_id = NULL)

-- FULL OUTER JOIN: كل صفوف الجدولين
SELECT u.name, o.total_amount
FROM users u
FULL OUTER JOIN orders o ON u.id = o.user_id;
-- كل المستخدمين (حتى من ليس لديه طلبات)
-- كل الطلبات (حتى اليتيمة)

2. مقارنة أنواع JOIN الأربعة

INNER JOIN

السجلات المتطابقة في الجدولين فقط.

"التقاطع"

LEFT JOIN

كل صفوف الجدول الأيسر + المتطابقة من الأيمن (NULL إن لم يوجد).

"الأيسر كامل"

RIGHT JOIN

كل صفوف الجدول الأيمن + المتطابقة من الأيسر (NULL إن لم يوجد).

"الأيمن كامل"

FULL OUTER JOIN

كل صفوف الجدولين — المتطابقة وغير المتطابقة.

"الجدولان كاملان"

3. تنبيه مهم: FULL OUTER JOIN في MySQL و SQLite

غير مدعوم في
  • MySQL (حتى الإصدار 8)
  • SQLite (جميع الإصدارات)
مدعوم في
  • PostgreSQL
  • SQL Server
  • Oracle

الحل البديل: محاكاة FULL OUTER JOIN عبر LEFT JOIN + UNION + RIGHT JOIN.

التطبيق العملي المباشر

تحدي الدرس الثالث: إتقان JOINs المتقدمة

قم بالتعديل على الكود بداخل المحرر أدناه لتطبيق المتطلبات التالية:

  1. احتفظ باستعلامي RIGHT JOIN و FULL OUTER JOIN الأصليين.
  2. أضف استعلاماً يحاكي FULL OUTER JOIN عبر LEFT JOIN UNION RIGHT JOIN.
  3. أضف استعلاماً يجمع RIGHT JOIN مع WHERE orders.total_amount > 100.
  4. أضف استعلاماً يجمع LEFT JOIN + GROUP BY users.name + COUNT(orders.id).
  5. اضغط "تشغيل الكود" لرؤية نتائج آخر استعلام.
⏳ جارٍ تحميل المحرر التفاعلي...