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

ينطبق على
Access لـ Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

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

بناء الجملة

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

مقارنة [أي | الكل | SOME] (sqlstatement)

التعبير [NOT] IN (sqlstatement)

[ليس كذلك] EXISTS (sqlstatement)

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

الجزء الوصف
مقارنة تعبير وعامل مقارنة يقارن التعبير بنتائج الاستعلام الفرعي.
تعبير تعبير يتم البحث عن مجموعة نتائج الاستعلام الفرعي له.
sqlstatement جملة 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 لاسترداد السجلات في الاستعلام الرئيسي التي تلبي المقارنة مع كافة السجلات التي تم استردادها في الاستعلام الفرعي فقط. إذا قمت بتغيير "أي" إلى "الكل" في المثال السابق، فسيرجع الاستعلام فقط المنتجات التي يكون سعر وحدتها أكبر من سعر كل المنتجات المباعة بخصم 25 بالمائة أو أكثر. هذا أكثر تقييدا.

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

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

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

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

يمكنك أيضا استخدام أسماء الجداول المستعارة في استعلام فرعي للإشارة إلى الجداول المدرجة في عبارة 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). لا يسمح بالاستعلامات الفرعية كإخراج (تلك الموجودة في القائمة SELECT) في الاستعلامات الجدولية.