it-swarm.asia

ما هو الفرق بين الانضمام إلى اليسار و الانضمام إلى اليمين و الانضمام الكامل؟

ما الفرق بين INNER JOIN و LEFT JOIN و RIGHT JOIN و FULL JOIN في MySQL ؟

1445
Lion King

قراءة هذه المقالة الأصلية على مشروع القانون سوف يساعدك كثيرًا: التمثيل المرئي لـ SQL Joins .

alt text

تحقق أيضًا من هذا المنشور: مزود خدمة - أداء أفضل - انضم إلى اليسار أم لا؟ .

ابحث عن نسخة أصلية على: الفرق بين JOIN و OUTER JOIN في MySQL .

2897
Pranay Rana

INNER JOIN يحصل على جميع السجلات الشائعة بين الجدولين بناءً على المفتاح الخارجي.

LEFT JOIN يحصل على جميع السجلات من الجدول المرتبط LEFT ولكن إذا قمت بتحديد بعض الأعمدة من الجدول RIGHT ، إذا لم يكن هناك سجلات ذات صلة ، فإن هذه الأعمدة تحتوي على NULL.

RIGHT JOIN يشبه ما ورد أعلاه ولكنه يحصل على جميع السجلات في جدول RIGHT.

FULL JOIN يحصل على جميع السجلات من كلا الجدولين ويضع NULL في الأعمدة حيث السجلات ذات الصلة غير موجودة في الجدول المقابل.

613
Brian Leeming

يتم استخدام جملة SQL JOIN لدمج الصفوف من جدولين أو أكثر ، استنادًا إلى حقل مشترك بينهما.

هناك أنواع مختلفة من الصلات المتاحة في SQL:

INNER JOIN : إرجاع الصفوف عندما يكون هناك تطابق في كلا الجدولين.

LEFT JOIN : تقوم بإرجاع كافة الصفوف من الجدول الأيسر ، حتى إذا لم تكن هناك تطابقات في الجدول الأيمن.

RIGHT JOIN : تقوم بإرجاع كافة الصفوف من الجدول الأيمن ، حتى إذا لم تكن هناك تطابقات في الجدول الأيسر.

FULL JOIN : فهو يجمع بين نتائج كل من الصلات الخارجية اليسرى واليمنى.

سيحتوي الجدول المنضم على جميع السجلات من كلا الجدولين ويملأ الأرقام الخالية للمطابقات المفقودة على كلا الجانبين.

يستخدم SELF JOIN : لضم جدول إلى نفسه كما لو كان الجدول جدولين ، إعادة تسمية جدول واحد على الأقل مؤقتًا في عبارة SQL.

CARTESIAN JOIN : تقوم بإرجاع المنتج الديكارتي لمجموعات السجلات من الجدولين المرتبطين أو أكثر.

يمكننا أن نأخذ كل الصلات الأربعة الأولى في التفاصيل

لدينا جدولين مع القيم التالية.

TableA

id  firstName                  lastName
.......................................
1   arun                        prasanth                 
2   ann                         antony                   
3   sruthy                      abc                      
6   new                         abc                                           

TableB

id2 age Place
................
1   24  kerala
2   24  usa
3   25  ekm
5   24  chennai

.................................................. ..................

INNER JOIN

ملاحظة : يعطي تقاطع الجدولين ، أي الصفوف التي يشيعانها في TableA و TableB

بناء الجملة

SELECT table1.column1, table2.column2...
  FROM table1
 INNER JOIN table2
    ON table1.common_field = table2.common_field;

تطبيقه في الجدول عينة لدينا:

SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
  FROM TableA
 INNER JOIN TableB
    ON TableA.id = TableB.id2;

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

firstName       lastName       age  Place
..............................................
arun            prasanth        24  kerala
ann             antony          24  usa
sruthy          abc             25  ekm

LEFT JOIN

ملاحظة : ستمنح كل الصفوف المحددة في TableA ، بالإضافة إلى أي صفوف محددة مشتركة في TableB.

بناء الجملة

SELECT table1.column1, table2.column2...
  FROM table1
  LEFT JOIN table2
    ON table1.common_field = table2.common_field;

تطبيقه في الجدول عينة لدينا:

SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
  FROM TableA
  LEFT JOIN TableB
    ON TableA.id = TableB.id2;

نتيجة

firstName                   lastName                    age   Place
...............................................................................
arun                        prasanth                    24    kerala
ann                         antony                      24    usa
sruthy                      abc                         25    ekm
new                         abc                         NULL  NULL

الانضمام الصحيح

ملاحظة : ستعطي كل الصفوف المحددة في TableB ، بالإضافة إلى أي صفوف محددة مشتركة في TableA.

بناء الجملة

SELECT table1.column1, table2.column2...
  FROM table1
 RIGHT JOIN table2
    ON table1.common_field = table2.common_field;

تطبيقه في الجدول عينة لدينا:

SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
  FROM TableA
 RIGHT JOIN TableB
    ON TableA.id = TableB.id2;

نتيجة

firstName                   lastName                    age     Place
...............................................................................
arun                        prasanth                    24     kerala
ann                         antony                      24     usa
sruthy                      abc                         25     ekm
NULL                        NULL                        24     chennai

الانضمام الكامل

ملاحظة : سيعود جميع القيم المحددة من كلا الجدولين.

بناء الجملة

SELECT table1.column1, table2.column2...
  FROM table1
  FULL JOIN table2
    ON table1.common_field = table2.common_field;

تطبيقه في الجدول عينة لدينا:

SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
  FROM TableA
  FULL JOIN TableB
    ON TableA.id = TableB.id2;

نتيجة

firstName                   lastName                    age    Place
...............................................................................
arun                        prasanth                    24    kerala
ann                         antony                      24    usa
sruthy                      abc                         25    ekm
new                         abc                         NULL  NULL
NULL                        NULL                        24    chennai

حقائق مثيرة للاهتمام

بالنسبة إلى INNER ، فإن الأمر لا يهم

بالنسبة إلى (LEFT أو RIGHT أو FULL) ، تنضم أمر OUTER إلى الأمر

الأفضل أن تحقق هذاالرابطسوف يعطيك تفاصيل مثيرة للاهتمام حول ترتيب الانضمام

597
Arunprasanth K V