عنصر JOIN في SQL
- الصفحة السابقة SQL Aliases
- الصفحة التالية SQL Inner Join
استخدم 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: إذا كانت هناك تطابق في أي من الجداول، يتم إرجاع الصفوف
- الصفحة السابقة SQL Aliases
- الصفحة التالية SQL Inner Join