الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

استعلام فرعي داخل استعلام رئيسي على نفس الجدول

مغلق
بدأه kingofdark في 5 مايو 2006 · 3 رد · 1,142 مشاهدة · في قواعد بيانات MySQL
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

لدي جدول باسم subject

تحزن فيه المواد التي درسها الطالب ونتيجته فيها ويختوي على حقل باسم pass ياخذ القيمه (yes/no)

بحيث اذا درس الطالب المقرر ولم ينجح تكون قيمة هذا الحقل no واذا نجح تكون yes

============

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

اترككم مع الصور لتوضخ الفكرة .

في المثال لدي طالب درس الفيزياء ورسب فيها اول مره ثم نجح انظر الصورة

1.jpg

نلاحظ أنه نجح في المادة وباتالي لا اريدها ان تخرج في الاستعلام طبعا الاستعلام المقصود هو

SELECT Subjects.YearCode, Subjects.SubjNUM, Subjects.SubjSymb, Subjects.StID, Subjects.GradeID, Subjects.Pass
FROM Subjects
WHERE (((Subjects.StID)=221001) AND ((Subjects.Pass)=No));

انظر صور ناتج الاستعلام السابق ستجد ان مادة الفيزياء موجوده

2.jpg

لذلك ساحتاج لاستعلام اخر اجعله فرعي فائدته انه يقوم بجلب المواد التي نج فيها الطالب فقط ومن ثم اعمل شرط في الاستلام الاساسي على رمز المقرر انه لايساوي اي رمز موجود في الاستعلام الفرعي

الاستعلام الفرعي المطلوب

SELECT  Subjects.SubjNUM
FROM Subjects
WHERE (((Subjects.StID)=221001) AND ((Subjects.Pass)=Yes));

انظر الصورة لنتائج الاستعلام الفرعي ستجد منها الفيزياء الان ماهي الطريقة التي من حلالها اجعل الاستعلام الاساسي ياتي بجميع المواد الراسب فيها الطالب ماعدا تلك التي موجوده في الاستعلام الفرعي

3.jpg

فهل من مساعد

تم تعديل هذه المشاركة بواسطة kingofdark في 5 مايو 2006 في 18:06

#2

جرب دى

SELECT s2.YearCode, s2.SubjNUM, s2.SubjSymb, s2.StID, s2.GradeID, s2.Pass
FROM Subjects s2
WHERE s2.StID = 221001 AND s2.Pass = No AND s2.SubjNUM NOT IN (  SELECT  s1.SubjNUM
                                 FROM Subjects s1
                                 WHERE s1.StID = 221001 AND s1.Pass =Yes
                        );

Web Citizen

ShrefInLife.gif

__________

General blog : Shref In Life

#3

شكرا لك أخي شريف وجزاك الله خيرا

في الحقيقة استخدمت not in قبل أن أسأل ولكن لم تعمل معي ربما بسبب خطأ في تداخل الاستعلامات لدي حيث ان الاستعلام الفرعي والاساسي السابق جزئين من داخل استعلامات اخرى .

ولكن عمل معي الكود الذي وضعته أخي الكريم

فلك مني الشكر .

طلب اخير اخي هل من الممكن أن اجد لديك كتاب الكتروني عن sql بشيء من التوسع والشمول خصوصا وأن لدي بعض الكتب ولكن ليست كامله وخصوصا عندما نأتي للاستعلامات المتداخله ذات الطابع المعقد .

تم تعديل هذه المشاركة بواسطة kingofdark في 6 مايو 2006 في 22:35

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…