في لغة SQL، تُستخدم خاصية LEFT JOIN (أو LEFT OUTER JOIN، وهما مُصطلحان مُترادفان) لدمج صفوف من جدولين. الفكرة الأساسية هي جلب جميع الصفوف من الجدول "الأيسر" (الجدول الذي يأتي على يسار كلمة LEFT JOIN)، بالإضافة إلى الصفوف المطابقة من الجدول "الأيمن" (الجدول الذي يأتي على يمين كلمة LEFT JOIN).

شرح مُفصّل:

تخيل أن لديك جدولين:

  • الجدول الأول (اليسار): Customers (العملاء) يحتوي على معلومات عن العملاء (مثل CustomerID، Name).
  • الجدول الثاني (اليمين): Orders (الطلبات) يحتوي على معلومات عن الطلبات (مثل OrderID، CustomerID، OrderDate).

تريد الآن عرض قائمة بجميع العملاء، مع عرض الطلبات الخاصة بكل عميل (إن وجدت). هنا يأتي دور LEFT JOIN.

الصيغة:

SQL
SELECT columns
FROM LeftTable
LEFT JOIN RightTable ON LeftTable.JoinColumn = RightTable.JoinColumn;
  • LeftTable: الجدول الأيسر.
  • RightTable: الجدول الأيمن.
  • JoinColumn: العمود المشترك بين الجدولين والذي يُستخدم لربط الصفوف.

مثال عملي:

لنفترض أن لديك البيانات التالية:

جدول Customers:

CustomerIDName
1أحمد
2محمد
3علي
4فاطمة

جدول Orders:

OrderIDCustomerIDOrderDate
10112024-01-10
10212024-01-15
10322024-01-20

باستخدام LEFT JOIN:

SQL
SELECT Customers.CustomerID, Customers.Name, Orders.OrderID, Orders.OrderDate
FROM Customers
LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID;

ستكون النتيجة:

CustomerIDNameOrderIDOrderDate
1أحمد1012024-01-10
1أحمد1022024-01-15
2محمد1032024-01-20
3عليNULLNULL
4فاطمةNULLNULL

ملاحظات هامة:

  • جميع صفوف الجدول الأيسر موجودة: كما ترى، جميع العملاء (أحمد، محمد، علي، فاطمة) موجودون في النتيجة.
  • صفوف مطابقة من الجدول الأيمن: بالنسبة لأحمد ومحمد، تم عرض الطلبات الخاصة بهم.
  • قيم 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 لدمج البيانات بطريقة تضمن لك الحصول على جميع بيانات الجدول الأيسر، مع إمكانية الحصول على بيانات مطابقة من الجدول الأيمن.