آلية INNER JOIN
افهم INNER JOIN بوصفه حاصل ضرب ديكارتيًا مُرشّحًا، واكتب شروط الربط، واقرأ مخرجات EXPLAIN لعمليات الربط.
آلية INNER JOIN درس مجاني في SQL Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في SQL Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة SQL Academy 4 دروس في المجموع.
عملية INNER JOIN
تُرجع INNER JOIN الصفوف التي لها زوج مطابق في كلا الجدولين فقط، وذلك استنادًا إلى شرط ON.
INNER JOIN أساسي
اجلبوا كل طلب مع مستخدمه:
SELECT o.id, o.total, u.email
FROM orders o
INNER JOIN users u ON u.id = o.user_id;
-- INNER is the default — you can also write:
SELECT o.id, o.total, u.email
FROM orders o
JOIN users u ON u.id = o.user_id;شروط متعددة في ON
عبارة ON هي تعبير منطقي عادي:
SELECT *
FROM events e
JOIN sessions s
ON s.user_id = e.user_id
AND e.created_at BETWEEN s.start_at AND s.end_at;الأسماء المستعارة
تقصّر الأسماء المستعارة الاستعلامات وتتجنب الإشارات الغامضة إلى الأعمدة:
SELECT o.id, u.email
FROM orders AS o -- AS is optional
JOIN users AS u ON u.id = o.user_id;ربط ثلاثة جداول أو أكثر
سلسلوا عمليات الربط بتكرار عبارة JOIN:
SELECT o.id, u.email, p.name AS product
FROM orders o
JOIN users u ON u.id = o.user_id
JOIN products p ON p.id = o.product_id;USING (column)
عندما يكون لعمود الربط الاسم نفسه في كلا الجدولين، يمكنكم كتابة USING، إذ تزيل العمود المكرر من الناتج:
SELECT o.id, total, email
FROM orders
JOIN users USING (user_id); -- requires both tables to have user_idNATURAL JOIN
-- Avoid in production code:
SELECT * FROM orders NATURAL JOIN users;شروط JOIN مقابل WHERE
في INNER JOIN، يكون الشرط الموجود في ON مكافئًا منطقيًا للشرط الموجود في WHERE. convention: ضعوا الشروط التي تحدد علاقة JOIN في ON، وشروط تصفية الصفوف في WHERE.
SELECT * FROM orders o
JOIN users u ON u.id = o.user_id -- join condition
WHERE u.country = 'US'; -- row filterتضاعف النتائج
إذا طابق صف في A ثلاثة صفوف في B، فسيحتوي الناتج على ثلاثة صفوف. هذا طبيعي، لكنه قد يكون مفاجئًا عند نسيانه. هل تجرون تجميعًا؟ استخدموا COUNT(*) بحذر.
مقدمة إلى الربط الذاتي
يمكنكم ربط جدول بنفسه من خلال إعطاء كل نسخة اسمًا مستعارًا مختلفًا:
SELECT e.full_name AS employee, m.full_name AS manager
FROM employees e
JOIN employees m ON m.id = e.manager_id;أداء INNER JOIN
تكون عمليات الربط الداخلي سريعة عندما:
- يكون عمود الربط مفهرسًا، وخصوصًا في جانب FK
- يكون أحد الجدولين صغيرًا، فيُستخدم ربط التجزئة، أو يكون كلا الجدولين مرتبًا، فيُستخدم ربط الدمج
- تُجرى التصفية مبكرًا للحفاظ على انخفاض عدد الصفوف الوسيطة
مراجعة
يُبقي INNER JOIN الأزواج المتطابقة فقط.
- يكون JOIN هو INNER JOIN افتراضيًا
- يعبّر ON عن شرط الربط
- تحافظ الأسماء المستعارة على قِصر الاستعلامات
- ينبغي فهرسة أعمدة الربط
تحقق سريع
ماذا يُرجع orders INNER JOIN users ON users.id = orders.user_id عندما لا يكون للطلب مستخدم مطابق، أي عندما يكون طلبًا يتيمًا؟
الأسئلة الشائعة
هل درس «آلية INNER JOIN» مجاني؟
نعم — نص درس «آلية INNER JOIN» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة SQL Academy، انتقل إلى CoddyKit PRO. تتضمن دورة SQL Academy 4 دروس في المجموع.
ماذا ستتعلم في «آلية INNER JOIN»؟
افهم INNER JOIN بوصفه حاصل ضرب ديكارتيًا مُرشّحًا، واكتب شروط الربط، واقرأ مخرجات EXPLAIN لعمليات الربط. تتمرن على SQL Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ SQL Academy؟
لا تُشترط خبرة سابقة. SQL Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «آلية INNER JOIN»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس SQL Academy هذا؟
نعم. كل درس في SQL Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- لماذا نستخدم عمليات الربط (مراجعة النموذج العلائقي)
- آلية INNER JOIN
- LEFT JOIN وRIGHT JOIN وعمليات الربط الخارجية
- الربط الذاتي والأسماء المستعارة