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

Ast Lam Sql Alfr Y Alandmam M Alast Lam Alkharjy



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

تعد الاستعلامات الفرعية من أقوى ميزات SQL. الاستعلامات الفرعية هي مجموعة من الاستعلامات المتداخلة ضمن استعلام أكبر وأكثر تعقيدًا. تسمح لك الاستعلامات الفرعية باسترداد البيانات أو إجراء عمليات أكثر تعقيدًا ككيان واحد.







يمكننا استخدام الاستعلامات الفرعية لإجراء تصفية البيانات وفرزها وتجميعها في جداول متعددة والمزيد.



ومع ذلك ، تُعرف ميزة أخرى مخفية ضمن استعلامات SQL الفرعية باسم صلات الاستعلام الفرعي. هذه تشبه الاستعلامات الفرعية ؛ بدلاً من ذلك ، فهي صلات تسمح لك باستخدام الاستعلامات الفرعية داخل استعلام خارجي لربط الجداول معًا.



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





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

إتقان صلات SQL الخارجية

إذا كنت تريد فهم كيفية العمل مع صلات الاستعلام الفرعي ، فإن تعلم كيفية التعامل مع الصلات الخارجية يعد عاملاً رئيسيًا.



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

في الصلة الخارجية اليسرى من SQL ، يعرض الاستعلام جميع الصفوف من الجدول الأيسر والصفوف المتطابقة من الجدول الأيمن. يتضمن الاستعلام القيم الفارغة في الأعمدة الناتجة إذا لم تكن هناك صفوف متطابقة في الجدول الأيمن.

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

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

ينضم استعلام SQL الفرعي

الآن بعد أن فهمنا استعلامات SQL الفرعية ، فلنتحدث عن صلات طلب البحث الفرعي. تسمح لنا صلات الاستعلام الفرعي باستخدام الاستعلامات الفرعية داخل استعلام خارجي للانضمام إلى الجداول.

إذا كنت تسأل ، هل هذا هو؟ نعم ، هذا هو كل ما تفعله صلات الاستعلام الفرعي.

لتوضيح ذلك بشكل أفضل ، خذ مثال بناء الجملة التالي الموضح في ما يلي:

يختار *
من الجدول 1
ترك صلة خارجية (
حدد العمود 1 ، العمود 2
من الجدول 2
) استعلام فرعي
تشغيل table1.column3 = subquery.column1 ؛


في الصيغة السابقة ، نحدد جميع الأعمدة من الجدول الأول باستخدام صلة خارجية يسرى لربطها باستعلام فرعي. يتمثل دور الاستعلام الفرعي في جلب الأعمدة المحددة من الجدول 2. ثم نقوم بربطه بالجدول 1 في حالة العمود 2 من الجدول 1 والعمود 1 من الاستعلام الفرعي.

مثال عملي:

من الناحية النظرية ، يبدو الأمر أقل بديهية ولكن دعونا نأخذ سيناريو العالم الحقيقي من خلال أخذ قاعدة بيانات Sakila.

لنفترض أننا نريد استرداد قائمة جميع الأفلام الموجودة في قاعدة البيانات واللغات الخاصة بها. يتم تخزين لغات الأفلام في جدول اللغة ، ويتم تخزين أسماء الأفلام في جدول الأفلام.

ومع ذلك ، يحتوي جدول الفيلم على مفتاح خارجي يسمى عمود 'language_id' من جدول اللغة. لذلك ، يمكننا استخدام صلة استعلام فرعي مع صلة خارجية يسرى لربط الجدولين معًا كما هو موضح في الاستعلام التالي:

حدد العنوان ، الاسم كلغة
من فيلم f
ترك صلة خارجية (
حدد معرّف اللغة ، الاسم
من اللغة
) كما ل
ON f.language_id = l.language_id ؛


في استعلام المثال السابق ، نختار عمود العنوان من جدول الفيلم وعمود الاسم من جدول اللغة.

ثم نستخدم استعلامًا فرعيًا لتحديد معرّف اللغة وعمود الاسم من جدول اللغات. والخطوة التالية هي ضمه إلى جدول الأفلام بشرط أن يساوي معرف اللغة من جدول الفيلم معرّف اللغة من جدول اللغة.

للتأكد من تضمين جميع الأفلام في النتيجة ، نحتاج إلى استخدام الوصلة الخارجية اليسرى التي تتكون من جميع النتائج من الجدول الأيسر والتي ، في هذه الحالة ، هي طاولة الأفلام.

مثال الإخراج هو كما يلي:


يمكننا أيضًا أن نفعل الشيء نفسه مع صلة خارجية صحيحة. بناء الجملة كما يلي:

يختار *
من الجدول 1
حق الانضمام الخارجي (
حدد العمود 1 ، العمود 2
من الجدول 2
) استعلام فرعي
تشغيل table1.column3 = subquery.column1 ؛


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

أشياء مفيدة يجب معرفتها

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

على سبيل المثال ، تجنب استخدام صلات الاستعلام الفرعي مع مجموعة بيانات كبيرة. هذا لأنه يمكنهم إرجاع السجلات الشاملة التي يمكن أن تؤثر على أداء قاعدة البيانات.

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

خاتمة

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