استعلامات SQL الفرعية

هام: تمت ترجمة هذه المقالة ترجمة آلية، راجع إقرار إخلاء المسؤولية. يرجى الاطلاع على النسخة الإنجليزية من هذه المقالة. هنا للرجوع إليها.

يتكون الاستعلام الفرعي من جملة SELECT متداخلة في الجملة SELECT أو SELECT...INTO أو INSERT...INTO أو DELETE أو UPDATE أو داخل استعلام فرعي آخر.

بناء الجملة

يمكنك استخدام ثلاثة نماذج من بناء الجملة لإنشاء استعلام فرعي:

مقارنة [ANY | ALL | SOME] (sqlجملة )

تعبير [NOT] IN (sqlجملة )

[NOT] EXISTS (sqlجملة )

يتكون الاستعلام الفرعي من الأجزاء التالية:

الجزء

الوصف

مقارنة

تعبير وعامل تشغيل المقارنة الذي يقارن التعبير بنتائج الاستعلام الفرعي.

تعبير

التعبير الذي يقوم بالبحث في مجموعة نتائج الاستعلام الفرعي للحصول على البيانات المطلوبة.

جملة sql

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


ملاحظات

يمكنك استخدام استعلام فرعي بدلاً من تعبير في قائمة الحقول الخاصة بجملة SELECT أو في عبارة WHERE أو HAVING. في الاستعلام الفرعي، يمكنك استخدام جملة SELECT لتوفير مجموعة من واحد أو أكثر من القيم المعيّنة المراد تقييمها في تعبير عبارة WHERE أو HAVING.

استخدم المسند ANY أو SOME، المترادفان، لاسترداد السجلات في الاستعلام الرئيسي والتي تتم مقارنتها بأية سجلات يتم استردادها في الاستعلام الفرعي. يقوم المثال التالي بإرجاع كافة المنتجات التي سعر الوحدة الخاص بها أكبر من سعر أي منتج تم بيعه بخصم 25 بالمائة أو أكثر:

SELECT * FROM Products WHERE UnitPrice > ANY (SELECT UnitPrice FROM OrderDetails WHERE Discount >= .25);

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

استخدم المسند IN لاسترداد تلك السجلات فقط في الاستعلام الرئيسي التي يحتوي أحد السجلات بالاستعلام الفرعي على قيمة مساوية لها. يقوم المثال التالي بإرجاع كافة المنتجات التي يتم بيعها بخصم 25 في المائة أو أكثر:

SELECT * FROM Products WHERE ProductID IN (SELECT ProductID FROM OrderDetails WHERE Discount >= .25);

على العكس، يمكنك استخدام NOT IN لاسترداد تلك السجلات فقط في الاستعلام الرئيسي التي ليس لها أية قيمة مساوية في أي سجل بالاستعلام الفرعي.

استخدم المسند EXISTS (مع الكلمة المحجوزة الاختيارية NOT) في مقارنات true/false "صواب/خطأ" لتحديد ما إذا كان الاستعلام الفرعي يقوم بإرجاع أية سجلات.

يمكنك ايضا استخدام الاسماء المستعاره ل# اسم الجدول في استعلام فرعي ل# الاشاره الي الجداول المدرجه في from خارج الاستعلام الفرعي. يرجع المثال التالي اسماء الموظفين الذين الرواتب اكبر من متوسط مرتب جميع الموظفين تواجه المسمي الوظيفي نفسه. جدول الموظفون يتم منح الاسم المستعار "T1":

SELECT LastName, FirstName, Title, Salary FROM Employees AS T1 WHERE Salary >= (SELECT Avg(Salary) FROM Employees WHERE T1.Title = Employees.Title) Order by Title;

في المثال السابق، تكون كلمة محجوزة AS اختيارية.

تم السماح ب# بعض الاستعلامات الفرعيه في الاستعلامات الجدوليه — ب# شكل خاص، ك# دالات التقييم (تلك في عباره where). الاستعلامات الفرعيه ك# اخراج (تلك الموجوده في قائمه التحديد) غير مسموحه في الاستعلامات الجدوليه.



ملاحظة: إقرار إخلاء المسؤولية للترجمة الآلية: تمت ترجمة هذه المقالة بواسطة نظام كمبيوتر دون تدخل العامل البشري. توفر Microsoft هذه الترجمات الآلية لمساعدة المستخدمين الذين لا يتحدثون الإنجليزية على استخدام منتجات Microsoft، وخدماتها، وتقنياتها والاستمتاع بها. قد تحتوي هذه المقالة على أخطاء في المفردات، أو بناء الجملة، أو القواعد نظرًا لترجمتها آليًا.

توسيع المهارات
استكشاف التدريب
الحصول على الميزات الجديدة أولاً
الانضمام إلى Office Insider

هل كانت المعلومات مفيدة؟

نشكرك على ملاحظاتك!

شكراً لك على الملاحظات! يبدو أنه من المفيد إيصالك بأحد وكلاء دعم Office لدينا.

×