عند ربط جدول بنفسه لتكوين أزواج، قد يظهر الزوج مرتين: مرة بالترتيب الأول ومرة بالترتيب المعكوس. مثلا، يمكن أن يظهر الموظف 2 مع الموظف 5، ثم الموظف 5 مع الموظف 2. إذا كان المطلوب زوجا غير مرتب، فإن هذين الصفين يمثلان العلاقة نفسها ولا نحتاج إلى كليهما.
نستخدم مقارنة مثل a.id < b.id عندما تكون المعرّفات فريدة. تسمح هذه المقارنة باتجاه واحد فقط لكل زوج، وتمنع كذلك ربط الصف بنفسه. أما الشرط a.id <> b.id فيمنع الزوج الذاتي لكنه يبقي الاتجاهين، ولذلك لا يحقق المطلوب وحده.
مثال
SELECT a.id, b.id
FROM employees AS a
INNER JOIN employees AS b
ON a.country_id = b.country_id
AND a.id < b.id;
يعرض المثال أزواج الموظفين الذين يشتركون في بلد معلوم، مرة واحدة لكل زوج. ويمكن تطبيق الفكرة نفسها على أزواج الأفلام أو الكتب أو المشاركين في نشاط معين.
باختصار: استخدم مقارنة صارمة بين المعرّفات لتمنع الأزواج الذاتية والمعكوسة معا.
هل تريد تعلّم SQL خطوة بخطوة مع تمارين عملية؟ تابع مسار SQL من الأساسيات للاحتراف.