في لغة SQL، تُستخدم خاصية LEFT JOIN
(أو LEFT OUTER JOIN
، وهما مُصطلحان مُترادفان) لدمج صفوف من جدولين. الفكرة الأساسية هي جلب جميع الصفوف من الجدول "الأيسر" (الجدول الذي يأتي على يسار كلمة LEFT JOIN
)، بالإضافة إلى الصفوف المطابقة من الجدول "الأيمن" (الجدول الذي يأتي على يمين كلمة LEFT JOIN
).
شرح مُفصّل:
تخيل أن لديك جدولين:
- الجدول الأول (اليسار):
Customers
(العملاء) يحتوي على معلومات عن العملاء (مثلCustomerID
،Name
). - الجدول الثاني (اليمين):
Orders
(الطلبات) يحتوي على معلومات عن الطلبات (مثلOrderID
،CustomerID
،OrderDate
).
تريد الآن عرض قائمة بجميع العملاء، مع عرض الطلبات الخاصة بكل عميل (إن وجدت). هنا يأتي دور LEFT JOIN
.
الصيغة:
SQL
SELECT columnsFROM LeftTableLEFT JOIN RightTable ON LeftTable.JoinColumn = RightTable.JoinColumn;
LeftTable
: الجدول الأيسر.RightTable
: الجدول الأيمن.JoinColumn
: العمود المشترك بين الجدولين والذي يُستخدم لربط الصفوف.
مثال عملي:
لنفترض أن لديك البيانات التالية:
جدول Customers
:
CustomerID | Name |
---|---|
1 | أحمد |
2 | محمد |
3 | علي |
4 | فاطمة |
جدول Orders
:
OrderID | CustomerID | OrderDate |
---|---|---|
101 | 1 | 2024-01-10 |
102 | 1 | 2024-01-15 |
103 | 2 | 2024-01-20 |
باستخدام LEFT JOIN
:
SQL
SELECT Customers.CustomerID, Customers.Name, Orders.OrderID, Orders.OrderDateFROM CustomersLEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID;
ستكون النتيجة:
CustomerID | Name | OrderID | OrderDate |
---|---|---|---|
1 | أحمد | 101 | 2024-01-10 |
1 | أحمد | 102 | 2024-01-15 |
2 | محمد | 103 | 2024-01-20 |
3 | علي | NULL | NULL |
4 | فاطمة | NULL | NULL |
ملاحظات هامة:
- جميع صفوف الجدول الأيسر موجودة: كما ترى، جميع العملاء (أحمد، محمد، علي، فاطمة) موجودون في النتيجة.
- صفوف مطابقة من الجدول الأيمن: بالنسبة لأحمد ومحمد، تم عرض الطلبات الخاصة بهم.
- قيم
NULL
: بالنسبة لعلي وفاطمة، لم يكن لديهم أي طلبات في جدولOrders
، لذلك تم وضع قيمNULL
في عموديOrderID
وOrderDate
. هذا هو السلوك الرئيسي لـLEFT JOIN
: إذا لم يكن هناك تطابق في الجدول الأيمن، يتم وضع قيمNULL
. - الترتيب مهم: ترتيب الجداول في عبارة
LEFT JOIN
مهم جدًا.LEFT JOIN
يختلف عنRIGHT JOIN
. - استخدام
WHERE
معLEFT JOIN
: يُمكن استخدام عبارةWHERE
لتصفية النتائج بعد عملية الدمج.
متى نستخدم LEFT JOIN
؟
- عندما تريد عرض جميع الصفوف من جدول معين، مع معلومات إضافية من جدول آخر إذا كانت متوفرة.
- عندما تريد البحث عن الصفوف في جدول ما التي لا يوجد لها تطابق في جدول آخر (باستخدام
WHERE RightTable.JoinColumn IS NULL
).
باختصار، LEFT JOIN
أداة قوية في SQL لدمج البيانات بطريقة تضمن لك الحصول على جميع بيانات الجدول الأيسر، مع إمكانية الحصول على بيانات مطابقة من الجدول الأيمن.