الـ JOIN يدمج صفوفًا من جدولين بمطابقة شرط، عادةً foreign key. نوع الـ join يحدّد ما يحدث للصفوف التي لا مطابق لها على الجانب الآخر.
الـ JOIN يدمج صفوفًا من جدولين بمطابقة شرط، عادةً foreign key. نوع الـ join يحدّد ما يحدث للصفوف التي لا مطابق لها على الجانب الآخر.
NULL.-- customers(id, name) orders(id, customer_id, total)
-- INNER: only customers who have at least one order
SELECT c.name, o.total
FROM customers c
INNER JOIN orders o ON o.customer_id = c.id;
-- LEFT: every customer, even those with zero orders (total = NULL)
SELECT c.name, o.total
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id;
-- Classic use: find customers with NO orders
SELECT c.name
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id
WHERE o.id IS NULL; -- the LEFT JOIN's NULL side reveals the gap
WHERE (مثل WHERE o.total > 100) يحوّل بصمت LEFT JOIN إلى INNER JOIN، لأن NULL > 100 قيمته خطأ. ضع مثل هذه الشروط في عبارة ON إن أردت الإبقاء على الصفوف غير المتطابقة.معظم الاستعلامات الحقيقية تمتد عبر جداول متعددة، ونوع الـ join الخاطئ يُسقط أو يكرّر الصفوف بصمت — خطأ يعيد نتائج معقولة الظاهر. ومعرفة أن LEFT JOIN مع IS NULL يعثر على الصفوف "المفقودة"، وأن شرط WHERE على الجانب الفارغ (null) يُلغي الـ LEFT، يمنع فئة كاملة من أخطاء التقارير.
مكتبة من أسئلة مقابلات تقنية المعلومات مع إجابات مفصّلة — من المبتدئ إلى المتقدم.
تبرع