RIGHT JOIN
(أو RIGHT OUTER JOIN
) لدمج صفوف من جدولين أو أكثر بناءً على شرط مُحدد. الفرق الرئيسي بين RIGHT JOIN
و LEFT JOIN
هو أن RIGHT JOIN
تُرجع جميع الصفوف من الجدول الأيمن (الجدول الثاني المذكور بعد RIGHT JOIN
)، بالإضافة إلى الصفوف المطابقة من الجدول الأيسر (الجدول الأول). إذا لم يكن هناك تطابق في الجدول الأيسر لصف معين في الجدول الأيمن، فستكون قيم أعمدة الجدول الأيسر NULL
.الصيغة العامة:
SELECT columnsFROM table1RIGHT JOIN table2 ON table1.column_name = table2.column_name;
table1
: الجدول الأيسر.table2
: الجدول الأيمن.column_name
: اسم العمود المُستخدم للربط بين الجدولين (يجب أن يكون موجودًا في كلا الجدولين).ON
: الكلمة المفتاحية التي تُحدد شرط الربط.
شرح مفصل مع مثال:
لنفترض أن لدينا جدولين: Customers
(العملاء) و Orders
(الطلبات).
جدول Customers
:
CustomerID | CustomerName | City |
---|---|---|
1 | أحمد | الرياض |
2 | محمد | جدة |
3 | خالد | الدمام |
4 | علي | مكة |
جدول Orders
:
OrderID | CustomerID | OrderDate |
---|---|---|
101 | 1 | 2023-10-26 |
102 | 2 | 2023-10-27 |
103 | 2 | 2023-10-28 |
104 | 5 | 2023-10-29 |
الآن، إذا أردنا عرض جميع الطلبات مع معلومات العملاء الذين قاموا بها، حتى لو لم يكن هناك عميل مُرتبط بطلب معين (كما في حالة CustomerID
رقم 5)، نستخدم RIGHT JOIN
:
SELECT Customers.CustomerName, Orders.OrderID, Orders.OrderDateFROM CustomersRIGHT JOIN Orders ON Customers.CustomerID = Orders.CustomerID;
النتيجة:
CustomerName | OrderID | OrderDate |
---|---|---|
أحمد | 101 | 2023-10-26 |
محمد | 102 | 2023-10-27 |
محمد | 103 | 2023-10-28 |
NULL | 104 | 2023-10-29 |
كما نرى، تم عرض جميع الطلبات من جدول Orders
. بالنسبة للطلب رقم 104، لم يكن هناك عميل مطابق في جدول Customers
، لذلك كانت قيمة CustomerName
هي NULL
.
متى نستخدم RIGHT JOIN
؟
يُستخدم RIGHT JOIN
عندما نريد التأكد من عرض جميع الصفوف من الجدول الأيمن، بغض النظر عن وجود تطابق في الجدول الأيسر أم لا. هذا مُفيد في الحالات التالية:
- عند تحليل البيانات من وجهة نظر الجدول الأيمن.
- عند البحث عن البيانات المفقودة في الجدول الأيسر.
- عند إنشاء تقارير تتطلب عرض جميع بيانات جدول معين مع معلومات إضافية من جدول آخر.
ملاحظات:
- يُمكن استخدام
RIGHT OUTER JOIN
بدلاً منRIGHT JOIN
. كلاهما يُعطي نفس النتيجة. - في بعض أنظمة قواعد البيانات، قد لا يكون
RIGHT JOIN
مدعومًا بشكل مباشر. في هذه الحالة، يُمكن تحقيق نفس النتيجة باستخدامLEFT JOIN
مع تبديل ترتيب الجداول. على سبيل المثال، الاستعلام السابق يُمكن كتابته كالتالي باستخدامLEFT JOIN
:
SELECT Customers.CustomerName, Orders.OrderID, Orders.OrderDateFROM OrdersLEFT JOIN Customers ON Customers.CustomerID = Orders.CustomerID;
مع الانتباه إلى تبديل أماكن الجدولين في عبارة FROM
.
باختصار، RIGHT JOIN
أداة قوية في SQL تُمكنك من دمج البيانات من جدولين مع التركيز على عرض جميع بيانات الجدول الأيمن. فهمها واستخدامها بشكل صحيح يُساعدك على كتابة استعلامات SQL فعالة ودقيقة.