موصى به, 2022

اختيار المحرر

الفرق بين اليسار واليمين والانضمام الكامل الخارجي

ناقشنا في وقت سابق الاختلافات بين Inner Join و Outer Join ، حيث استعرضنا أنواع الانضمام الخارجي. Outer Join هو الشخص الذي يحافظ على الصفوف في النتيجة التي كانت ستفقد أثناء الانضمام إلى العملية. في هذه المقالة سنناقش الاختلافات بين أنواع الانضمام الخارجي. هناك ثلاثة أنواع من "الانضمام الخارجي"؛ Left Outer Join، Right Outer Join، and Full Outer Join. يختلف Left و Right و Full Out Join في خطة التنفيذ الخاصة بهم ، والنتائج التي تم الحصول عليها. يمكننا حذف كلمة خارجية من اليسار واليمين و الانضمام الخارجي الكامل. دعنا نتفحص الاختلافات بين Left و Right و Full Join الخارجي بمساعدة الرسم البياني المقابل الموضح أدناه.

رسم بياني للمقارنة

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

تعريف يسار الخارجي صلة

لنفترض أننا لدينا ، " Table_A Left Outer Join Table_B ". لذا فإن Table_A هو الجدول الأيسر الخاص بنا حيث يظهر إلى اليسار من عملية Left Outer Join و Table_B هو جدولنا الصحيح .

في البداية ، سيتم تطبيق الصلة الداخلية على Table_A و Table_B والتي ستعيد كل المجموعة المطابقة من الجدول A و B.

بعد ذلك ، ستقوم بإرجاع كافة tuples من Table_A التي لا تحتوي على tuple مطابقة في Table_B. مثل هذا ، سيتم padded مجموعات الناتجة مع قيم فارغة لخصائص الجدول الصحيح.

ومن ثم ، فإن النتيجة التي يتم الحصول عليها من Left Outer Join تحتفظ بجميع tuples من الجدول الأيسر وطبقات مطابقة فقط من الجدول الصحيح.

دعونا نناقش Left Outer Join مع مثال ؛ لدينا جدولين أدناه ، جدول الطالب وجدول قسم .

الآن ، سنقوم بتطبيق Left Outer Join ، على Student و Department Table.

اختر * من الطالب إلى الخارج
على الطالب. Student_ID = Department.Student_ID

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

مراقبة النتيجة التي تم الحصول عليها من يسار الخارجي صلة. أنه يحتوي على جميع tuples من جدول الطالب جنبا إلى جنب مع الصفوف المطابقة من كل من جدول الطالب والدائرة. لم يكن تلميذ الطالب جيمي وجوز هاري من جدول الطالب موجودًا في جدول القسم. ومن ثم ، يتم توسيع قيم سمات جدول قسم جيمي ، جوزيف هاري إلى NULL.

تعريف الحق الخارجي صلة

لنفترض أن لدينا ، " Table_A Right Outer Join Table_B ". لذا فإن Table_A هو الجدول الأيسر الخاص بنا حيث يظهر على يسار عملية Right Outer Join و Table_B هو جدولنا الصحيح .

كما هو الحال في Left Outer Join ، في البداية ، سيتم تطبيق الصلة الداخلية على Table_A و Table_B والتي ستعيد كل المجموعة المطابقة من الجدول A و B.

بعد ذلك ، ستقوم بإرجاع كافة tuples من Table_B التي لا تحتوي على tuple مطابقة في Table_A. مثل هذا ، سيتم padded tuples الناتجة مع قيم فارغة لخصائص الجدول الأيسر.

وبالتالي ، تحتفظ النتيجة التي تم الحصول عليها من الصلة الخارجية الصحيحة بكافة المجموعات من الجدول الأيمن وطبقات مطابقة فقط من الجدول الأيسر.

دعونا نناقش Right Outer Join مع مثال ؛ أعلاه لدينا اثنين من الجداول ، جدول الطالب وجدول قسم.

الآن ، سنطبق تطبيق Right Outer Join على جدول الطلاب وجدول القسم.

اختر * من قسم الطلاب إلى قسم الطلاب
على الطالب. Student_ID = Department.Student_ID

في الاستعلام أعلاه ، جدول الطالب هو جدولنا الأيسر والجدول هو جدولنا الصحيح. وفقًا لعملية Right Outer Join ، يجب أن تشتمل النتيجة على جميع المجموعات من جدول القسم ومطابقة التراكبات فقط من جدول الطالب.

مراقبة النتيجة التي تم الحصول عليها من الربط الخارجي الصحيح. يحتوي على كافة tuples من جدول "إدارة" جنبا إلى جنب مع الصفوف المطابقة من الجدول "طالب" و "القسم". لا يتم عرض Student_ID 10536 و 00954 ، من جدول الأقسام ، في جدول الطلاب. لذلك ، يتم توسيع قيمة السمة للاسم لـ Student_ID 10536 و 00954 إلى NULL.

تعريف الانضمام الخارجي الكامل

لنفترض أن لدينا " Table_A Full Join Join Table_B ". لذا فإن Table_A هو الجدول الأيسر الخاص بنا حيث يظهر على يسار عملية Full Outer Join و Table_B هو جدولنا الصحيح .

Full Outer Join هو مزيج من كل من Left Outer Join و Right Outer Join . مبدئيًا ، يتم تطبيق الربط الداخلي على Table_A و Table_B لاسترداد مجموعتين متطابقتين من كلا الجدولين. ثم فإنه يمتد تلك الصفوف من Table_A مع NULL التي لا تحتوي على tuple مطابقة في Table_B. علاوة على ذلك ، فإنه يمتد تلك المجموعات من Table_B مع NULL التي لا تحتوي على tuple مطابقة في Table_A.

وبالتالي ، يحتفظ Full Outer Join بجميع الصفوف من اليسار بالإضافة إلى الجدول الصحيح ، إلى جانب الصفوف المطابقة لكلتا الجدولين.

دعونا نناقش FULL الخارجي Join مع مثال ؛ لدينا جدولان أعلاه ، جدول الطالب وجدول القسم .

الآن ، سنقوم بتطبيق Full Outer Join على جدول الطالب وجدول القسم.

اختر * من قسم الطلاب الكامل للطلاب الخارجيين
على الطالب. Student_ID = Department.Student_ID

في الاستعلام أعلاه ، جدول الطالب هو جدولنا الأيسر وجدول القسم هو جدولنا الصحيح. وفقًا لـ Full Outer Join ، يجب أن تتضمن النتيجة جميع المجموعات من كلا الجدولين.

مراقبة النتيجة التي تم الحصول عليها من الانضمام الخارجي الكامل ؛ يحتوي على كافة tuples من جدول "الطالب" و "القسم" جنبا إلى جنب مع الصفوف المطابقة من جدول "الطالب" و "القسم". لم يكن الطالب في Jimmy أو Joseph Harry أي 10026،02256،56362 على التوالي من جدول الطلاب موجودًا في جدول القسم. وبالتالي ، يتم توسيع قيم السمات الخاصة بجدول قسم جيمي وجوزيف هاري إلى NULL . لا يوجد Student_ID 10536 و 00954 ، من جدول الأقسام ، في عمود Student_ID في جدول الطالب. وبالتالي ، يتم توسيع قيمة السمة سمة الاسم لـ Student_ID 10536 و 00954 إلى NULL .

الاختلافات الأساسية بين اليسار واليمين والكامل الانضمام الخارجي

  1. نتيجة Left Outer Join يحتوي على كل tuples من الجدول الأيسر. وبالمثل ، فإن نتيجة Right Out Join تحتوي على جميع مجموعات الجدول الصحيح. وكانت نتيجة Full Outer Join جميع الصفوف من كل من اليسار والجدول الأيمن.
  2. في Left الخارجي Join ، يتم توسيع مجموعة من الجدول الأيسر التي ليس لديها tuple مطابقة في الجدول الأيمن مع قيم Null لخصائص الجدول الصحيح. عكس هو الحال بالنسبة اليمين الخارجي الانضمام. وفي Full Outer Join ، يتم توسيع المجموعات من الجداول اليمنى واليسرى التي لا تحتوي على مجموعات مطابقة في الجداول اليمنى واليسرى على التوالي مع NULL لخصائص الجدول الأيمن والأيسر على التوالي.

استنتاج:

اعتني بمواقف أسماء الجداول في الاستعلام. عندما يحدد موضع اسم الجدول في الاستعلام ما إذا كان سيتم اعتبار الجدول جدولًا يسارًا أو جدولًا صحيحًا.

Top