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 المتقدمة
قم بالتعديل على الكود بداخل المحرر أدناه لتطبيق المتطلبات التالية:
- احتفظ باستعلامي
RIGHT JOINوFULL OUTER JOINالأصليين. - أضف استعلاماً يحاكي FULL OUTER JOIN عبر
LEFT JOIN UNION RIGHT JOIN. - أضف استعلاماً يجمع
RIGHT JOINمعWHERE orders.total_amount > 100. - أضف استعلاماً يجمع
LEFT JOIN+GROUP BY users.name+COUNT(orders.id). - اضغط "تشغيل الكود" لرؤية نتائج آخر استعلام.
⏳ جارٍ تحميل المحرر التفاعلي...