لماذا قد يفشل اختبار عمود قابل للفراغ في اكتشاف الصفوف بلا مطابق؟

متقدمقراءة دقيقةآخر تحديث 3 أكتوبر 2026

SQL قواعد البيانات

الإجابة

عند البحث عن صفوف لا تملك مقابلا باستخدام ربط خارجي، يجب اختيار عمود مناسب لاختبار 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 من الأساسيات للاحتراف.

اختبر فهمك

نريد العملاء بلا أي طلب. orders.id مفتاح أساسي وshipped_at يقبل NULL. ما التصحيح المناسب؟

SELECT c.id
FROM customers AS c
LEFT JOIN orders AS o ON o.customer_id = c.id
WHERE o.shipped_at IS NULL;