عند البحث عن صفوف لا تملك مقابلا باستخدام ربط خارجي، يجب اختيار عمود مناسب لاختبار IS NULL. المشكلة أن القيمة الفارغة قد تأتي من مصدرين مختلفين: غياب الصف المرتبط بالكامل، أو وجود صف حقيقي تكون قيمة أحد أعمدته فارغة. اختبار عمود اختياري لا يميز بين الحالتين.
مثلا، قد يكون للعميل طلب حقيقي لم يحدد له تاريخ شحن بعد. إذا اختبرنا o.shipped_at IS NULL بعد الربط، فسيظهر هذا العميل مع العملاء الذين لا يملكون طلبات أصلا. تصبح النتيجة أوسع من المطلوب، رغم أن الصياغة صحيحة ولا ينتج عنها خطأ تنفيذي.
مثال
SELECT c.id
FROM customers AS c
LEFT JOIN orders AS o ON o.customer_id = c.id
WHERE o.id IS NULL;
يعتمد التصحيح على أن orders.id مفتاح أساسي لا يقبل الفراغ. لذلك لا يمكن أن تكون قيمته NULL في صف طلب حقيقي، وتصبح القيمة الفارغة دليلا على غياب المطابقة.
باختصار: افحص عمودا مضمونا غير فارغ في الصفوف الحقيقية، حتى لا تخلط بين البيانات الناقصة والصفوف الغائبة.
هل تريد تعلّم SQL خطوة بخطوة مع تمارين عملية؟ تابع مسار SQL من الأساسيات للاحتراف.