afshin62
پنج شنبه 14 آبان 1388, 11: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)));
اميدوارم مشكلم رو تونسته باشم درست بيان كنم
لطفاً كمكم كنيد
با تشكر
من يه سئوال درباره نحوه درست كردن يه 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)));
اميدوارم مشكلم رو تونسته باشم درست بيان كنم
لطفاً كمكم كنيد
با تشكر