البرمجة

حصر نتائج T-SQL باستخدام EXISTS

لحل هذه المشكلة في T-SQL والحصول على النتيجة المطلوبة، يمكنك استخدام استعلام NOT EXISTS للتحقق مما إذا كان هناك مستخدم آخر لديه نفس UserId ولكن ليس لديه LessonId نفسه. هنا الاستعلام الذي يمكن استخدامه:

sql
SELECT * FROM LessonList ll WHERE (LessonId = 102 AND LessonValue = 1002) OR (LessonId = 103 AND LessonValue = 1003) OR (LessonId = 102 AND LessonValue = 1008) OR (UserId = 11 AND NOT EXISTS ( SELECT 1 FROM LessonList WHERE UserId = ll.UserId AND LessonId = 103 ))

هذا الاستعلام يختار جميع الصفوف التي تطابق شروط LessonId و LessonValue الأولية، ثم يضيف شرطًا إضافيًا باستخدام NOT EXISTS للتحقق من عدم وجود مستخدم آخر (بنفس UserId) لديه LessonId = 103.

المزيد من المعلومات

بالتأكيد، إليك المزيد من المعلومات حول الاستعلام والطريقة التي يعمل بها:

  1. يتم استخدام العملية SELECT * FROM LessonList لاسترجاع جميع الصفوف من الجدول LessonList.

  2. يتم وضع شروط البحث في العبارات WHERE في الاستعلام، حيث تُستخدم الشروط المتعلقة بـ LessonId و LessonValue لتحديد الصفوف التي تحتوي على تلك القيم.

  3. يتم استخدام NOT EXISTS للتحقق مما إذا كان هناك صف آخر في الجدول يحتوي على نفس UserId ولكن LessonId يختلف عن 103. إذا كان هناك صف مطابق، فإن هذا يعني أن هناك مستخدم آخر يمتلك LessonId مختلفة عن 103، وبالتالي لا يتم تضمينه في النتيجة.

  4. باستخدام NOT EXISTS، يتم فحص الجدول LessonList من جديد للتحقق مما إذا كان هناك صف آخر يحتوي على نفس UserId و LessonId مختلف عن 103.

زر الذهاب إلى الأعلى