متى يحتاج شرط JOIN إلى أكثر من عمود؟

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

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

الإجابة

ليست كل علاقة بين جدولين قابلة للتحديد بواسطة عمود واحد. في نظام يخزن بيانات عدة شركات، قد يتكرر معرّف العميل بين الشركات، ويصبح العميل محددا بالزوج company_id وid. عند ربط الطلبات بالعملاء، يجب مقارنة معرّف الشركة ومعرّف العميل معا حتى نصل إلى الصف الصحيح.

إذا قارنا customer_id وحده، فقد يرتبط طلب شركة معينة بعميل يحمل الرقم نفسه في شركة أخرى. وإذا قارنا الشركة وحدها، فقد يرتبط الطلب بكل عملاء الشركة. كلا الاستعلامين قد يعمل دون خطأ، لكن النتيجة لا تحترم تعريف العلاقة المركبة.

مثال

SELECT o.id, c.name
FROM orders AS o
INNER JOIN customers AS c
  ON o.company_id = c.company_id
 AND o.customer_id = c.id;

نستخدم AND لأن المطابقة تحتاج إلى تحقق الجزأين في الوقت نفسه. أما OR فيقبل تطابق أحد الجزأين فقط، فيوسع النتيجة ويعيد الربط الخاطئ الذي نحاول منعه.

باختصار: إذا كانت هوية الصف مركبة، فاكتب جميع أجزاء العلاقة في شرط الربط باستخدام AND.

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

اختبر فهمك

معرّف العميل فريد داخل الشركة فقط. أي شرط يمنع ربط الطلب بعميل من شركة أخرى؟