2012-11-27 33 views
1

我試圖通過查詢獲得學生的分數和成績,但是我無法解決連接問題。這是非常複雜的數據庫。有沒有人做過?在moodle中查詢學生的分數和成績

下面的查詢(由我自己修改的表)適用於某些學生,但不適用於其他學生,所以我需要一個具有原始表結構的適當的查詢。

感謝

MY FAULTY QUERY

SELECT mdl_grade_items.id AS ItemID, 
     mdl_course.shortname AS CourseShortname, 
     mdl_grade_items.itemname AS ItemName, 
     mdl_grade_items.grademax AS ItemGradeMax, 
     mdl_grade_items.aggregationcoef AS ItemAggregation, 
     mdl_grade_grades.finalgrade AS FinalGrade, 
     mdl_user.username AS StudentID, 
     mdl_user.id 
FROM mdl_grade_items 
    INNER JOIN mdl_grade_grades 
    ON mdl_grade_items.id = mdl_grade_grades.itemid 
    INNER JOIN mdl_role_assignments 
    ON mdl_grade_grades.userid = mdl_role_assignments.userid 
    AND mdl_grade_items.courseid = mdl_role_assignments.mdlcourseid 
    INNER JOIN mdl_course 
    ON mdl_course.id = mdl_grade_items.courseid 
    INNER JOIN mdl_user 
    ON mdl_user.id = mdl_role_assignments.userid 
WHERE mdl_grade_items.courseid = '2864' 
    AND mdl_user.username = '123456789' 
+0

「它不起作用」:你是什麼意思?你得到錯誤的結果嗎?部分結果?沒有結果?一個錯誤? – RandomSeed

+0

您可以共享您嘗試訪問的表的表結構嗎? – Antimony

回答

4

,如果你忽略了學生的學籍可以簡化查詢(也許篩選學生以後如果需要的話)。

這裏是它會給你一個用戶的所有成績一門課程的例子:

SELECT 
    u.id AS userid, 
    u.username AS studentid, 
    gi.id AS itemid, 
    c.shortname AS courseshortname, 
    gi.itemname AS itemname, 
    gi.grademax AS itemgrademax, 
    gi.aggregationcoef AS itemaggregation, 
    g.finalgrade AS finalgrade 
    FROM mdl_user u 
    JOIN mdl_grade_grades g ON g.userid = u.id 
    JOIN mdl_grade_items gi ON g.itemid = gi.id 
    JOIN mdl_course c ON c.id = gi.courseid 
    WHERE gi.courseid = :courseid AND u.username = :username; 

如果不適合,也許你能解釋一下你正試圖從非要達到什麼技術立場。

相關問題