omran2015 قام بنشر منذ 17 ساعات قام بنشر منذ 17 ساعات أريد استخراج الطلبــة العشرة الأوائل في استعلام Q_Top10_ByClass مع ملاحظة تكرار الترتيب علماً بأنه ثم إنشاء مديول لاحتساب الأوائل؛ ولكن لم أعرف كيف استدعيها في الاستعلام Data_Base.rar
Foksh قام بنشر منذ 5 ساعات قام بنشر منذ 5 ساعات بدايةً ، وعليكم السلام ورحمة الله وبركاته .. لديك نقطة واحد فقط كان عليك إدراكها . وهي إضافة الحقل ClassID من الجدول F ، وجعل الشرط [أدخل اسم الصف] له وليس للحقل ClassName من الجدول S . قبل تجربة المرفق ، جرب دون النظر للمرفق حتى تفهم المقصود من كلامي .. مع العلم أن ملفك يعمل معي بشكل سليم باستخراج الأوائل . إلا إن كان هناك نقطة لم تتوضح في شرحك 😀 Data_Base.zip
Foksh قام بنشر منذ 4 ساعات قام بنشر منذ 4 ساعات اهاااا ، بعد متابعة النتيجة ، وجدت أنه يأتيك بجميع الطلاب للفصل الأول والصف الثامن وعددهم 16 على سبيل المثال .. وأنت تريد فقط 10 جرب هذا الإستعلام التالي :- SELECT TOP 10 S.StudentID, S.StudentName, S.ClassName, S.SETNO1, F.SemesterID, F.TotalSum, F.average, F.Grade, ( SELECT COUNT(*) FROM TBL_Final1 AS F2 INNER JOIN TBL_Students AS S2 ON F2.StudentID = S2.StudentID WHERE F2.SemesterID = F.SemesterID AND S2.ClassName = S.ClassName AND F2.average > F.average ) + 1 AS RankOrder FROM TBL_Students AS S INNER JOIN TBL_Final1 AS F ON S.StudentID = F.StudentID WHERE F.SemesterID = [أدخل رقم الفصل] AND S.ClassName = [أدخل اسم الصف] ORDER BY F.average DESC, S.StudentID ASC; 1
omran2015 قام بنشر منذ 1 ساعه الكاتب قام بنشر منذ 1 ساعه (معدل) 2 ساعات مضت, Foksh said: اهاااا ، بعد متابعة النتيجة ، وجدت أنه يأتيك بجميع الطلاب للفصل الأول والصف الثامن وعددهم 16 على سبيل المثال .. وأنت تريد فقط 10 جرب هذا الإستعلام التالي :- SELECT TOP 10 S.StudentID, S.StudentName, S.ClassName, S.SETNO1, F.SemesterID, F.TotalSum, F.average, F.Grade, ( SELECT COUNT(*) FROM TBL_Final1 AS F2 INNER JOIN TBL_Students AS S2 ON F2.StudentID = S2.StudentID WHERE F2.SemesterID = F.SemesterID AND S2.ClassName = S.ClassName AND F2.average > F.average ) + 1 AS RankOrder FROM TBL_Students AS S INNER JOIN TBL_Final1 AS F ON S.StudentID = F.StudentID WHERE F.SemesterID = [أدخل رقم الفصل] AND S.ClassName = [أدخل اسم الصف] ORDER BY F.average DESC, S.StudentID ASC; بارك الله فيك وجزاك الله خيرا على حسن اهتمامك بالموضوع وردك الطيب الجميل ويجعلك من عتقائه من النار في هذا الشهر المبارك ولدي عدة ملحوظات وهى: 1/ مشكلة القفز في الترتيب ولو تلاحظ أن الترتيب يظهر هكذا 1 2 3 4 4 6 والمفروض يظهر 4 4 متكرر 5 6 وهكذا 2/ أتمنى تغيير المسميات إلى نص أقصد بدلا من 1.2.3 وهكذا أريده أن يكون: الأول الثاني الثالث إلى الترتيب العاشر 3/ ملاحظة تكرار الترتيب بحيث يكون مثلا: الأول الأول متكرر وهكذا تم تعديل منذ 1 ساعه بواسطه omran2015
kkhalifa1960 قام بنشر منذ 1 ساعه قام بنشر منذ 1 ساعه SELECT TOP 10 S.StudentID, S.StudentName, S.ClassName, S.SETNO1, F.SemesterID, F.TotalSum, F.average, F.Grade, /* الترتيب الصحيح بدون قفزات */ (SELECT COUNT(DISTINCT F2.average) FROM TBL_Final1 AS F2 INNER JOIN TBL_Students AS S2 ON F2.StudentID = S2.StudentID WHERE F2.SemesterID = F.SemesterID AND S2.ClassName = S.ClassName AND F2.average > F.average ) + 1 AS RankOrder, /* تحويل الرقم إلى نص */ Switch( (SELECT COUNT(DISTINCT F2.average) FROM TBL_Final1 AS F2 INNER JOIN TBL_Students AS S2 ON F2.StudentID = S2.StudentID WHERE F2.SemesterID = F.SemesterID AND S2.ClassName = S.ClassName AND F2.average > F.average ) + 1 = 1, "الأول", (SELECT COUNT(DISTINCT F2.average) FROM TBL_Final1 AS F2 INNER JOIN TBL_Students AS S2 ON F2.StudentID = S2.StudentID WHERE F2.SemesterID = F.SemesterID AND S2.ClassName = S.ClassName AND F2.average > F.average ) + 1 = 2, "الثاني", (SELECT COUNT(DISTINCT F2.average) FROM TBL_Final1 AS F2 INNER JOIN TBL_Students AS S2 ON F2.StudentID = S2.StudentID WHERE F2.SemesterID = F.SemesterID AND S2.ClassName = S.ClassName AND F2.average > F.average ) + 1 = 3, "الثالث", (SELECT COUNT(DISTINCT F2.average) FROM TBL_Final1 AS F2 INNER JOIN TBL_Students AS S2 ON F2.StudentID = S2.StudentID WHERE F2.SemesterID = F.SemesterID AND S2.ClassName = S.ClassName AND F2.average > F.average ) + 1 = 4, "الرابع", (SELECT COUNT(DISTINCT F2.average) FROM TBL_Final1 AS F2 INNER JOIN TBL_Students AS S2 ON F2.StudentID = S2.StudentID WHERE F2.SemesterID = F.SemesterID AND S2.ClassName = S.ClassName AND F2.average > F.average ) + 1 = 5, "الخامس", (SELECT COUNT(DISTINCT F2.average) FROM TBL_Final1 AS F2 INNER JOIN TBL_Students AS S2 ON F2.StudentID = S2.StudentID WHERE F2.SemesterID = F.SemesterID AND S2.ClassName = S.ClassName AND F2.average > F.average ) + 1 = 6, "السادس", (SELECT COUNT(DISTINCT F2.average) FROM TBL_Final1 AS F2 INNER JOIN TBL_Students AS S2 ON F2.StudentID = S2.StudentID WHERE F2.SemesterID = F.SemesterID AND S2.ClassName = S.ClassName AND F2.average > F.average ) + 1 = 7, "السابع", (SELECT COUNT(DISTINCT F2.average) FROM TBL_Final1 AS F2 INNER JOIN TBL_Students AS S2 ON F2.StudentID = S2.StudentID WHERE F2.SemesterID = F.SemesterID AND S2.ClassName = S.ClassName AND F2.average > F.average ) + 1 = 8, "الثامن", (SELECT COUNT(DISTINCT F2.average) FROM TBL_Final1 AS F2 INNER JOIN TBL_Students AS S2 ON F2.StudentID = S2.StudentID WHERE F2.SemesterID = F.SemesterID AND S2.ClassName = S.ClassName AND F2.average > F.average ) + 1 = 9, "التاسع", (SELECT COUNT(DISTINCT F2.average) FROM TBL_Final1 AS F2 INNER JOIN TBL_Students AS S2 ON F2.StudentID = S2.StudentID WHERE F2.SemesterID = F.SemesterID AND S2.ClassName = S.ClassName AND F2.average > F.average ) + 1 = 10, "العاشر" ) AS RankText, /* إضافة كلمة "متكرر" عند وجود أكثر من طالب بنفس المعدل */ Switch( (SELECT COUNT(DISTINCT F2.average) FROM TBL_Final1 AS F2 INNER JOIN TBL_Students AS S2 ON F2.StudentID = S2.StudentID WHERE F2.SemesterID = F.SemesterID AND S2.ClassName = S.ClassName AND F2.average > F.average ) + 1 = 1, "الأول", (SELECT COUNT(DISTINCT F2.average) FROM TBL_Final1 AS F2 INNER JOIN TBL_Students AS S2 ON F2.StudentID = S2.StudentID WHERE F2.SemesterID = F.SemesterID AND S2.ClassName = S.ClassName AND F2.average > F.average ) + 1 = 2, "الثاني", (SELECT COUNT(DISTINCT F2.average) FROM TBL_Final1 AS F2 INNER JOIN TBL_Students AS S2 ON F2.StudentID = S2.StudentID WHERE F2.SemesterID = F.SemesterID AND S2.ClassName = S.ClassName AND F2.average > F.average ) + 1 = 3, "الثالث" ) & IIf( (SELECT COUNT(*) FROM TBL_Final1 AS F3 WHERE F3.SemesterID = F.SemesterID AND F3.average = F.average) > 1, " متكرر", "" ) AS RankFinal FROM TBL_Students AS S INNER JOIN TBL_Final1 AS F ON S.StudentID = F.StudentID WHERE F.SemesterID = [أدخل رقم الفصل] AND S.ClassName = [أدخل اسم الصف] ORDER BY F.average DESC, S.StudentID ASC;
الردود الموصى بها
انشئ حساب جديد او قم بتسجيل دخولك لتتمكن من اضافه تعليق جديد
يجب ان تكون عضوا لدينا لتتمكن من التعليق
انشئ حساب جديد
سجل حسابك الجديد لدينا في الموقع بمنتهي السهوله .
سجل حساب جديدتسجيل دخول
هل تمتلك حساب بالفعل ؟ سجل دخولك من هنا.
سجل دخولك الان