فهم التفاعل بين المناطق الداخلية والخارجية في SQL
استفسارات SQL المعقدة في كثير من الأحيان تستخدم عمليات انضمام متعددة ، يجمع بين أنواع الانضمام المختلفة. أحد الاعتبارات الرئيسية هو كيف يتأثر إدراج القيم الفارغة ، وهي سمة من سمات الوصلات الخارجية ، عندما يتم تطبيق انضمام داخلي لاحقًا.
كيف يمكن أن تؤثر انضمام داخلي على نتائج الانضمام الخارجي
انضم داخلي ، بطبيعته ، يعيد فقط الصفوف حيث يتم استيفاء حالة الانضمام في الجداول على حد سواء. إذا كان هناك انضمام داخلي يتبع صلة خارجية ، وتعتمد حالة Join Inner على الأعمدة التي قد تكون لاغية (بسبب الانضمام الخارجي) ، فإنها تقوم بتصفية الصفوف بشكل فعال حيث تكون هذه الأعمدة لاغية. هذا ينفي إدراج القيم الخالية التي ينضم إليها في البداية.
مثال توضيحي
دعنا نفحص سيناريو:
SELECT *
FROM person
LEFT JOIN address ON person.address_id = address.id
INNER JOIN email ON person.email_id = email.id;
ترك الانضمام أن يتم تضمين جميع الصفوف من الجدول
، حتى لو لم يكن هناك إدخال مطابق في
ومع ذلك ، فإن Inner inner
مع البريد الإلكتروني
ثم يقيد النتائج على تلك الصفوف فقط حيث يوجد مطابقة صفوف من
شخص الذي كان لديه عنوان
العنوان ولكن سيتم استبعاد email_id
.
سيناريو مشكلة وحلها
فكر في هذا الاستعلام:
هنا ، يفترض INNER JOIN مع
Cityأن
إذا كانت بعض العناوين تفتقر إلىSELECT *
FROM person
LEFT JOIN address ON person.address_id = address.id
INNER JOIN city ON address.city_id = city.id;
هو النهج الصحيح هو استخدام آخر ترك الانضمام بدلاً من
يختار *
من شخص
عنوان JOIND JOON ONDERS ON PRONE.ADDRESS_ID = address.id
غادر انضم إلى المدينة على العنوان. city_id = city.id ؛
هذا يحافظ على شمولية The Prinial
Left Join ، قد تكون حالات التعامل بشكل صحيح حيث
address. هذا يضمن تضمين جميع السجلات
، بغض النظر عما إذا كان لديهم عنوان أو مدينة مرتبطة بهم.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3