في لغة SQL، تُستخدم خاصية INNER JOIN
لدمج صفوف من جدولين أو أكثر بناءً على وجود قيم متطابقة في عمود مشترك بين هذه الجداول. تُرجع INNER JOIN
فقط الصفوف التي تحقق فيها شرط التطابق في كلا الجدولين. بمعنى آخر، تُظهر فقط الصفوف التي توجد فيها بيانات في كلا الجدولين مرتبطة بالعمود المُحدد.
شرح مبسط: تخيل لديك جدولين: جدول "العملاء" وجدول "الطلبات". يحتوي جدول "العملاء" على معلومات عن العملاء (مثل رقم العميل واسم العميل)، بينما يحتوي جدول "الطلبات" على معلومات عن الطلبات (مثل رقم الطلب ورقم العميل الذي قام بالطلب). باستخدام INNER JOIN
، يمكنك دمج هذين الجدولين لعرض قائمة بالطلبات مع معلومات العميل الذي قام بكل طلب، ولكن فقط للعملاء الذين لديهم طلبات بالفعل.
الصيغة العامة لـ INNER JOIN
:
SELECT column_name(s)FROM table1INNER 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) |
---|---|---|
101 | 1 | 2024-01-15 |
102 | 3 | 2024-01-20 |
103 | 1 | 2024-01-25 |
إذا أردنا عرض قائمة بالطلبات مع أسماء العملاء الذين قاموا بها، نستخدم الاستعلام التالي:
SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDateFROM CustomersINNER 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 لدمج البيانات من جداول متعددة بناءً على علاقة بينها، مما يُمكننا من استخلاص معلومات مُفيدة من قواعد البيانات.