JOIN
ربط جدولين أو أكثر JOIN
JOIN يدمج صفوفًا من جدولين أو أكثر حسب شرط مطابقة (ON)، وهو أساس التعامل مع البيانات الموزّعة على جداول علائقية.
JOIN يربط جدولين حسب عمود مشترك عادة (مفتاح أساسي في جدول ومفتاح أجنبي في آخر) عبر شرط ON. INNER JOIN يُرجع فقط الصفوف التي لها تطابق في الجدولين، بينما LEFT JOIN يُرجع كل صفوف الجدول الأيسر حتى بلا تطابق (بقيم NULL للجدول الآخر)، وRIGHT JOIN عكسه.
FULL JOIN يجمع سلوك LEFT وRIGHT معًا (كل الصفوف من الجدولين)، وCROSS JOIN يُنتج كل التوافيق الممكنة بين الجدولين بلا شرط ON، وSELF JOIN مجرد ربط جدول بنفسه باستخدام اسمين مستعارين مختلفين.
الصياغة
SELECT columns FROM table1 [INNER|LEFT|RIGHT|FULL] JOIN table2 ON table1.col = table2.col;
📄 مثال
SELECT users.name, orders.total FROM users LEFT JOIN orders ON users.id = orders.user_id;
أهم النقاط
| النقطة | الوظيفة |
|---|---|
| INNER JOIN | الصفوف التي لها تطابق في الجدولين فقط |
| LEFT JOIN | كل صفوف الجدول الأيسر، مع NULL للجدول الآخر إن لم يوجد تطابق |
| RIGHT JOIN | كل صفوف الجدول الأيمن، عكس LEFT JOIN |
| FULL JOIN | كل صفوف الجدولين، بتطابق أو بدونه |
| CROSS JOIN | كل التوافيق الممكنة بين صفوف الجدولين بلا شرط |
💡 نصائح عملية
- تأكّد من وجود فهرس على عمود الربط (خصوصًا المفتاح الأجنبي) — يسرّع JOIN بشكل كبير على الجداول الكبيرة
- استخدم LEFT JOIN + IS NULL لإيجاد صفوف لا يوجد لها تطابق في الجدول الآخر
⚠️ أخطاء شائعة
- نسيان شرط ON فينتج CROSS JOIN غير مقصود بعدد صفوف ضخم (Cartesian Product)
- الخلط بين LEFT وRIGHT JOIN عند القراءة — الأسهل غالبًا كتابة كل شيء بـ LEFT JOIN وتبديل ترتيب الجداول
خصائص ذات صلة
🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار SQL الكامل بالعربي.