PDA

View Full Version : محاسبه ميانگين شرطي براي دروس با كد



afshin62
پنج شنبه 14 آبان 1388, 10:02 صبح
با سلام خدمت اساتيد

من يه سئوال درباره نحوه درست كردن يه SQL command براي حل اين مشكل داشتم.
من برنامه اي نوشتم كه توي اون ميخوام معدل نمرات فردي رو بدست بيارم. اما من براي بعضي افراد ميتونم معدل دوره گذشته رو هم داشته باشم. يعني من به عنوان يه درس به كاربر قابليت ورود معدل دروه قبلي خودش رو دادم. پس الان توي جدول نمرات فردي ممكنه براي يه فرد درسي به اسم معدل دوره گذشته داشته باشم كه با استفاده از يك كد اونو معلوم ميكنم(كد3). من الان ميدونم چه دانشجويي معدل قبلي داشته.
خوب الان ميخوام معدل دروس كنوني كه نمرشون وارد شده رو با اون معدل دوره قبلي جمع كنم و از اون يه معدل جديد حساب كنم.
ساختار جداول من:

tblStudent:stID,Fname,Lname,…
Course:CourseID,Coursename,CourseCode
Grades:GrID,JuncID,Grade
CourseStudentJunc:JuncID,StID,CourseID

الان من بايد دروس با كدهاي 3 رو جدا كنم كه نشان دهنده معدل قبلي فرد هستش و از مابقي دروس معدل بگيرم و از معدل جديد و دوره گذشته يه معدل جديد بدست بيارم. مي تونم اينطور كاري رو بكنم يا نه.
اين تمام سعي من براي ساختن SQL مناسب هستش ولي كار نميكنه و اصلاً‌مشكل داره.

SELECT Student.FName, Student.LName, Student.ShenNum, Student.PersonNum, Student.FatherName, Student.Sadere, Student.BirthDate, Student.BegDate, Student.EndDate, Student.LearnPeriod, Course.CourseCode, Avg(FinalGrades.FinalGrade) AS AvgOfFinalGrade
FROM Raste INNER JOIN ((Student INNER JOIN (Course INNER JOIN CourseStudentJunc ON Course.CourseID = CourseStudentJunc.CourseID) ON Student.StudentID = CourseStudentJunc.StudentID) INNER JOIN FinalGrades ON CourseStudentJunc.JuncID = FinalGrades.JuncID) ON (Raste.RasteID = Student.RasteID) AND (Raste.RasteID = Course.RasteID)
GROUP BY Student.FName, Student.LName, Student.ShenNum, Student.PersonNum, Student.FatherName, Student.Sadere, Student.BirthDate, Student.BegDate, Student.EndDate, Student.LearnPeriod, Course.CourseCode
HAVING (((Course.CourseCode)=(select [coursecode] from course where [coursecode]=3)));


اميدوارم مشكلم رو تونسته باشم درست بيان كنم

لطفاً‌ كمكم كنيد
با تشكر

Appolo
پنج شنبه 14 آبان 1388, 23:10 عصر
دوست عزیز اینطوری نمیشه معدل گرفت.
شما برای جمع معدل ها علاوه بر معدل قبلی تعداد دروس قبلی را هم نیاز دارید.

afshin62
جمعه 15 آبان 1388, 05:03 صبح
ممنون از نظرت
من ميتونم معدل قبلي رو با استفاده از كد جدا كنم يا نه. دروس من واحد نداره فقط بايد معدل از كل دروس بگيرم و اگر بتونم با استفاده از كد درسي كه براي معدل قبلي گرفتم (3) اونو جدا كنم ديگه حله.
چه جوري ميشه معدل قبلي رو با استفاده از كد جدا كرد.

من در واقع SQL درست شده رو ميخوام تا با اون از كريستال ريپورتم رو بگيرم

با تشكر از راهنمايي شما