في لغة SQL، تُستخدم خاصية INNER JOIN لدمج صفوف من جدولين أو أكثر بناءً على وجود قيم متطابقة في عمود مشترك بين هذه الجداول. تُرجع INNER JOIN فقط الصفوف التي تحقق فيها شرط التطابق في كلا الجدولين. بمعنى آخر، تُظهر فقط الصفوف التي توجد فيها بيانات في كلا الجدولين مرتبطة بالعمود المُحدد.

شرح مبسط: تخيل لديك جدولين: جدول "العملاء" وجدول "الطلبات". يحتوي جدول "العملاء" على معلومات عن العملاء (مثل رقم العميل واسم العميل)، بينما يحتوي جدول "الطلبات" على معلومات عن الطلبات (مثل رقم الطلب ورقم العميل الذي قام بالطلب). باستخدام INNER JOIN، يمكنك دمج هذين الجدولين لعرض قائمة بالطلبات مع معلومات العميل الذي قام بكل طلب، ولكن فقط للعملاء الذين لديهم طلبات بالفعل.

الصيغة العامة لـ INNER JOIN:

SQL
SELECT column_name(s)
FROM table1
INNER JOIN table2 ON table1.column_name = table2.column_name;
  • SELECT column_name(s): تحدد الأعمدة التي ترغب في عرضها من الجداول.
  • FROM table1: تحدد الجدول الأول.
  • INNER JOIN table2: تحدد الجدول الثاني الذي سيتم دمجه مع الجدول الأول.
  • ON table1.column_name = table2.column_name: يحدد شرط الدمج، أي العمود المشترك بين الجدولين الذي سيتم استخدامه للمطابقة.

مثال عملي:

لنفترض أن لدينا جدولين:

جدول "العملاء" (Customers):

رقم العميل (CustomerID)اسم العميل (CustomerName)المدينة (City)
1أحمدالرياض
2خالدجدة
3سلمىالدمام
4نورةمكة

جدول "الطلبات" (Orders):

رقم الطلب (OrderID)رقم العميل (CustomerID)تاريخ الطلب (OrderDate)
10112024-01-15
10232024-01-20
10312024-01-25

إذا أردنا عرض قائمة بالطلبات مع أسماء العملاء الذين قاموا بها، نستخدم الاستعلام التالي:

SQL
SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Customers
INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID;

ستكون النتيجة كالتالي:

رقم الطلب (OrderID)اسم العميل (CustomerName)تاريخ الطلب (OrderDate)
101أحمد2024-01-15
102سلمى2024-01-20
103أحمد2024-01-25

ملاحظات مهمة:

  • التطابق التام: تُرجع INNER JOIN فقط الصفوف التي يوجد فيها تطابق تام في العمود المحدد في كلا الجدولين. إذا لم يكن هناك تطابق، لن يتم عرض الصف. في مثالنا، العميل "خالد" والعميلة "نورة" ليس لديهم طلبات في جدول "الطلبات"، لذلك لم يظهروا في النتيجة.
  • اختلاف أسماء الأعمدة: ليس من الضروري أن يكون للعمود المشترك نفس الاسم في كلا الجدولين. يمكنك استخدام INNER JOIN حتى لو كانت أسماء الأعمدة مختلفة، طالما أنها تحتوي على نفس نوع البيانات وقيم متطابقة.
  • استخدام WHERE مع INNER JOIN: يمكنك استخدام عبارة WHERE مع INNER JOIN لتصفية النتائج بشكل إضافي. على سبيل المثال، يمكنك عرض الطلبات التي تمت في تاريخ معين فقط.
  • اختصار INNER JOIN: يُمكن اختصار INNER JOIN إلى JOIN فقط، حيث أن INNER هي النوع الافتراضي للـ JOIN.

متى نستخدم INNER JOIN؟

نستخدم INNER JOIN عندما نريد الحصول على بيانات مرتبطة من جدولين أو أكثر، ونريد فقط الصفوف التي يوجد فيها تطابق في كلا الجدولين. تُعتبر INNER JOIN من أكثر أنواع الـ JOIN استخدامًا في SQL.

باختصار، INNER JOIN أداة قوية في SQL لدمج البيانات من جداول متعددة بناءً على علاقة بينها، مما يُمكننا من استخلاص معلومات مُفيدة من قواعد البيانات.