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

الربط الداخلي والخارجي (INNER JOIN & LEFT JOIN)

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

أهداف الدرس

  • دمج البيانات من جدولين باستخدام INNER JOIN (السجلات المتطابقة فقط).
  • ضمان عرض جميع سجلات الجدول الأيسر بـ LEFT JOIN حتى بدون تطابق.
  • دمج JOIN مع WHERE، ORDER BY، GROUP BY في استعلام واحد.
  • فهم الفرق بين INNER JOIN (المطابق فقط) و LEFT JOIN (الكل من اليسار).

1. استعلامات الربط المتقاطعة

تسمح أوامر الربط (JOINs) بتجميع أعمدة ومعلومات من جدولين أو أكثر في نتيجة استعلام واحدة بناءً على شرط الربط بين المفاتيح.

sql
-- INNER JOIN: يطابق السجلات في الجدولين
SELECT u.name, o.total_amount
FROM users u
INNER JOIN orders o ON u.id = o.user_id;
-- يُرجع فقط المستخدمين الذين لديهم طلبات

-- LEFT JOIN: كل صفوف اليسار + المطابقة من اليمين
SELECT u.name, o.total_amount
FROM users u
LEFT JOIN orders o ON u.id = o.user_id;
-- يُرجع كل المستخدمين (NULL للذين لا طلبات لهم)

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

INNER JOIN

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

Users  Orders
  ┌──┐  ┌──┐
  │  │██│  │
  │  │██│  │
  └──┘  └──┘
  Intersection
LEFT JOIN

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

Users  Orders
  ┌──┐  ┌──┐
  │██│██│██│
  │██│██│██│
  └──┘  └──┘
  Left + Match
RIGHT JOIN

كل صفوف اليمين + المطابقة من اليسار.

Users  Orders
  ┌──┐  ┌──┐
  │██│██│██│
  │██│██│██│
  └──┘  └──┘
  Match + Right

3. جدول مقارنة النتائج

الجدولINNER JOINLEFT JOIN
مستخدم له طلباتيظهريظهر
مستخدم بلا طلباتلا يظهريظهر (NULL)
التطبيق العملي المباشر

تحدي الدرس الثاني: استعلامات JOIN متقدمة

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

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