ما الفرق بين INNER JOIN
و LEFT JOIN
و RIGHT JOIN
و FULL JOIN
في MySQL ؟
قراءة هذه المقالة الأصلية على مشروع القانون سوف يساعدك كثيرًا: التمثيل المرئي لـ SQL Joins .
تحقق أيضًا من هذا المنشور: مزود خدمة - أداء أفضل - انضم إلى اليسار أم لا؟ .
ابحث عن نسخة أصلية على: الفرق بين JOIN و OUTER JOIN في MySQL .
INNER JOIN يحصل على جميع السجلات الشائعة بين الجدولين بناءً على المفتاح الخارجي.
LEFT JOIN يحصل على جميع السجلات من الجدول المرتبط LEFT ولكن إذا قمت بتحديد بعض الأعمدة من الجدول RIGHT ، إذا لم يكن هناك سجلات ذات صلة ، فإن هذه الأعمدة تحتوي على NULL.
RIGHT JOIN يشبه ما ورد أعلاه ولكنه يحصل على جميع السجلات في جدول RIGHT.
FULL JOIN يحصل على جميع السجلات من كلا الجدولين ويضع NULL في الأعمدة حيث السجلات ذات الصلة غير موجودة في الجدول المقابل.
يتم استخدام جملة 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 إلى الأمر
الأفضل أن تحقق هذاالرابطسوف يعطيك تفاصيل مثيرة للاهتمام حول ترتيب الانضمام