عنصر JOIN في SQL

استخدم SQL join لاستخراج البيانات من هذه الجداول بناءً على علاقات الأعمدة بينها.

Join و Key

في بعض الأحيان، نحتاج للحصول على نتائج كاملة من اثنين أو أكثر من الجداول. في هذه الحالة، نحتاج إلى تنفيذ join.

يمكن ربط جداول البيانات في قاعدة البيانات ببعضها البعض من خلال المفاتيح. المفتاح الرئيسي (Primary Key) هو عمود، حيث تكون القيم في كل سطر في هذا العمود فريدة. في الجدول، تكون القيم في كل مفتاح رئيسي فريدة. الغرض من هذا هو تربط بيانات الجداول معًا دون تكرار كل بيانات الجدول.

الآن، انظروا إلى جدول "Persons":

Id_P LastName FirstName عنوان مدينة
1 Adams John شارع أكسفورد لندن
2 بوش جورج شارع فيفث أفينيو نيويورك
3 Carter Thomas شارع تشانغ'an بكين

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

الآن، انظروا إلى جدول "Orders":

Id_O OrderNo Id_P
1 77895 3
2 44678 3
3 22456 1
4 24562 1
5 34764 65

يرجى الانتباه، "Id_O" هو المفتاح الرئيسي في جدول "Orders"، كما أن "Id_P" في جدول "Orders" يستخدم لمراجعة جدول "Persons" دون الحاجة إلى استخدام أسمائهم الحقيقية.

لاحظ أن "Id_P" يربط بين الجداول السابقتين.

مراجعة الجداول

يمكننا الحصول على بيانات من جداولين عن طريق مراجعة الجداول.

من الذي قام بشراء المنتجات وما الذي قام بشرائه؟

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons, Orders
WHERE Persons.Id_P = Orders.Id_P 

مجموعة النتائج:

LastName FirstName OrderNo
Adams John 22456
Adams John 24562
Carter Thomas 77895
Carter Thomas 44678

SQL JOIN - استخدام JOIN

بالإضافة إلى الطريقة المذكورة أعلاه، يمكننا أيضًا استخدام كلمة المفتاح JOIN للحصول على بيانات من جداولين.

إذا كنا نريد إدراج جميع الطلبات للجميع، يمكننا استخدام جملة SELECT التالية:

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
INNER JOIN Orders
ON Persons.Id_P = Orders.Id_P
ORDER BY Persons.LastName

مجموعة النتائج:

LastName FirstName OrderNo
Adams John 22456
Adams John 24562
Carter Thomas 77895
Carter Thomas 44678

أنواع مختلفة من SQL JOIN

بالإضافة إلى INNER JOIN (الإنضمام الداخلي) الذي استخدمناه في الأمثلة أعلاه، يمكننا أيضًا استخدام أنواع أخرى من الإنضمام.

فيما يلي قائمة بأنواع JOIN التي يمكنك استخدامها، وما هي الفروق بينها.

  • JOIN: إذا كان هناك تطابق على الأقل في الجدول، يتم إرجاع الصفوف
  • LEFT JOIN: حتى لو لم يكن هناك تطابق في الجدول الأيمن، يتم إرجاع جميع الصفوف من الجدول الأيسر
  • RIGHT JOIN: حتى لو لم يكن هناك تطابق في الجدول الأيسر، يتم إرجاع جميع الصفوف من الجدول الأيمن
  • FULL JOIN: إذا كانت هناك تطابق في أي من الجداول، يتم إرجاع الصفوف