logo

الانضمام الأيسر لـ MySQL

يتم استخدام Left Join في MySQL للاستعلام عن السجلات من جداول متعددة. تشبه هذه الجملة جملة Inner Join التي يمكن استخدامها مع عبارة SELECT مباشرة بعد الكلمة الأساسية FROM. عندما نستخدم عبارة Left Join، فإنها ستعيد جميع السجلات من الجدول الأول (الجانب الأيسر)، حتى لم يتم العثور على سجلات مطابقة من الجدول الثاني (الجانب الأيمن). إذا لم يتم العثور على أي سجل مطابق من الجدول الجانبي الأيمن، فسيتم إرجاعه فارغًا.

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

يمكننا أن نفهم ذلك من خلال التمثيل المرئي التالي حيث تقوم Left Joins بإرجاع جميع السجلات من الجدول الأيسر والسجلات المطابقة فقط من الجدول الجانبي الأيمن:

الانضمام الأيسر لـ MySQL

MySQL LEFT JOIN Syntax

يشرح بناء الجملة التالي جملة Left Join لربط جدولين أو أكثر:

 SELECT columns FROM table1 LEFT [OUTER] JOIN table2 ON Join_Condition; 

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

تحويل c++ إلى سلسلة

مثال على MySQL LEFT JOIN

دعونا نأخذ بعض الأمثلة لفهم عمل شرط الانضمام الأيسر أو الانضمام الخارجي الأيسر:

مخطوطة لكل منهما

جملة LEFT JOIN لربط جدولين

هنا سنقوم بإنشاء جدولين عملاء' و ' طلبات' الذي يحتوي على البيانات التالية:

الجدول: العملاء

الانضمام الأيسر لـ MySQL

الجدول: الطلبات

الانضمام الأيسر لـ MySQL

لتحديد السجلات من كلا الجدولين، قم بتنفيذ الاستعلام التالي:

 SELECT customers.customer_id, cust_name, price, date FROM customers LEFT JOIN orders ON customers.customer_id = orders.customer_id; 

بعد التنفيذ الناجح للاستعلام، فإنه سوف يعطي الإخراج التالي:

سلسلة جافا مقسمة بواسطة محدد
الانضمام الأيسر لـ MySQL

MySQL LEFT JOIN باستخدام جملة الاستخدام

العملاء والأوامر في الجدول لديهم نفس اسم العمود، وهو customer_id. في هذه الحالة، يمكن أيضًا استخدام MySQL Left Join مع جملة USING للوصول إلى السجلات. يُرجع البيان التالي معرف العميل واسم العميل والمهنة والسعر والتاريخ باستخدام جملة الانضمام الأيسر مع الكلمة الأساسية USING.

 SELECT customer_id, cust_name, occupation, price, date FROM customers LEFT JOIN orders USING(customer_id); 

البيان أعلاه سوف يعطي الإخراج التالي:

الانضمام الأيسر لـ MySQL

MySQL LEFT JOIN مع المجموعة حسب البند

يمكن أيضًا استخدام Left Join مع جملة GROUP BY. يُرجع البيان التالي معرف العميل واسم العميل والمؤهل والسعر والتاريخ باستخدام عبارة Left Join مع عبارة GROUP BY.

 SELECT customers.customer_id, cust_name, qualification, price, date FROM customers LEFT JOIN orders ON customers.customer_id = orders.customer_id GROUP BY price; 

البيان أعلاه سوف يعطي الإخراج التالي:

الانضمام الأيسر لـ MySQL

انضم إلى اليسار باستخدام جملة WHERE

يتم استخدام جملة WHERE لإرجاع منقي النتيجة من الجدول. يوضح المثال التالي ذلك من خلال عبارة Left Join:

 SELECT customer_id, cust_name, occupation, price, date FROM customers LEFT JOIN orders USING(customer_id) WHERE price>2500; 

هذا البيان يعطي النتيجة التالية:

الانضمام الأيسر لـ MySQL

MySQL LEFT JOIN جداول متعددة

لقد قمنا بالفعل بإنشاء جدولين باسم ' عملاء' و ' طلبات' . دعونا ننشئ جدولًا آخر ونسميه باسم ' جهات الاتصال التي تحتوي على البيانات التالية:

الانضمام الأيسر لـ MySQL

قم بتنفيذ العبارة التالية للانضمام إلى جداول العملاء والأوامر وجهات الاتصال الثلاثة:

كيفية فرز مجموعة في جافا
 SELECT customers.customer_id, cust_name, order_id, price, cellphone FROM customers LEFT JOIN contacts ON customer_id = contact_id LEFT JOIN orders ON customers.customer_id = orders.customer_id ORDER BY income; 

بعد التنفيذ الناجح للاستعلام أعلاه، فإنه سيعطي الإخراج التالي:

الانضمام الأيسر لـ MySQL

استخدام جملة LEFT JOIN للحصول على سجلات لا مثيل لها

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

يمكننا فهم ذلك من خلال المثال التالي الذي يستخدم جملة LEFT JOIN للعثور على عميل ليس لديه رقم هاتف محمول:

شيء فرز سريع
 SELECT customer_id, cust_name, cellphone, homephone FROM customers LEFT JOIN contacts ON customer_id = contact_id WHERE cellphone IS NULL ; 

البيان أعلاه يرجع الإخراج التالي:

الانضمام الأيسر لـ MySQL

الفرق بين عبارة WHERE وON في MySQL LEFT JOIN

في LEFT Join، يعطي الشرط WHERE وON نتيجة مختلفة. يمكننا أن نرى الاستعلامات التالية لفهم الاختلافات بينهما:

حيث الشرطية

 SELECT cust_name, occupation, order_id, price, date FROM customers LEFT JOIN orders USING(customer_id) WHERE price=2500; 

سيعطي الإخراج التالي الذي يعود:

الانضمام الأيسر لـ MySQL

على البند

 SELECT cust_name, occupation, order_id, price, date FROM customers LEFT JOIN orders ON price=2500; 

سوف يعطي الإخراج التالي:

الانضمام الأيسر لـ MySQL

ملاحظة: يؤدي شرط WHERE وON في جملة Inner Join دائمًا إلى إرجاع نتائج مكافئة.