كيف أجد البلدان التي لا يوجد لها رواد فضاء باستخدام JOIN؟

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

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

الإجابة

يمكن العثور على الصفوف التي لا تملك مقابلا باستخدام LEFT JOIN ثم اختبار غياب مفتاح الصف في الطرف الآخر. نبدأ بالجدول الذي نريد فحص جميع صفوفه، مثل البلدان، ونربطه بجدول رواد الفضاء. يحتفظ الربط بكل بلد، حتى عندما لا يجد رائد فضاء مرتبطا به.

بعد ذلك نستخدم WHERE a.id IS NULL لاختيار الصفوف التي لم تجد مطابقا. يفترض هذا الأسلوب أن a.id لا يقبل NULL في الصفوف الحقيقية، كما يحدث عندما يكون مفتاحا أساسيا. بهذه الطريقة نميز غياب الصف عن وجود صف حقيقي يحتوي على بيانات ناقصة في عمود آخر.

مثال

SELECT c.id, c.name
FROM countries AS c
LEFT JOIN astronauts AS a
  ON a.country_id = c.id
WHERE a.id IS NULL;

لا نستخدم المقارنة = NULL لهذا الغرض، لأن اختبار القيم الفارغة يحتاج إلى IS NULL. كما أن اختبار مفتاح البلد نفسه لا يكشف غياب رائد الفضاء.

باختصار: احفظ صفوف الجدول المطلوب، ثم اختبر IS NULL على مفتاح غير قابل للفراغ في الطرف المرتبط.

هل تريد تعلّم SQL خطوة بخطوة مع تمارين عملية؟ تابع مسار SQL من الأساسيات للاحتراف.

اختبر فهمك

إذا كان astronauts.id مفتاحا أساسيا، فأي شرط يكمل الاستعلام لإظهار البلدان بلا رواد فضاء؟

SELECT c.id
FROM countries AS c
LEFT JOIN astronauts AS a ON a.country_id = c.id
-- أضف شرط التصفية هنا