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