للعثور على التركيبات الناقصة، نحتاج أولا إلى بناء مجموعة التركيبات المتوقعة. إذا كان المطلوب معرفة البلدان غير المسجلة في كل فعالية، نستخدم CROSS JOIN بين البلدان والفعاليات لإنشاء كل زوج ممكن. بعد ذلك نبحث عن التسجيل الذي يطابق البلد والفعالية معا داخل جدول التسجيلات.
نستخدم LEFT JOIN حتى تبقى الأزواج التي لم تجد تسجيلا، ثم نختبر غياب مفتاح التسجيل. لا يكفي الربط بمعرّف البلد وحده، لأن تسجيل البلد في فعالية واحدة لا يعني تسجيله في جميع الفعاليات. وكذلك لا يكفي ربط التسجيل بالفعالية وحدها دون تحديد البلد.
مثال
SELECT c.id AS country_id, e.id AS event_id
FROM countries AS c
CROSS JOIN events AS e
LEFT JOIN registrations AS r
ON r.country_id = c.id AND r.event_id = e.id
WHERE r.id IS NULL;
يفترض المثال أن معرّف التسجيل مفتاح أساسي. تبدأ الفكرة من جميع الاحتمالات المطلوبة، ثم تزيل ما له مقابل موجود، فتتبقى الفجوات التي يمكن متابعتها أو استكمالها.
باختصار: أنشئ التركيبات باستخدام CROSS JOIN، ثم اكتشف الناقص منها بربط خارجي واختبار غياب المطابقة.
هل تريد تعلّم SQL خطوة بخطوة مع تمارين عملية؟ تابع مسار SQL من الأساسيات للاحتراف.