2014-12-02 88 views
2

隨着最近升級到Moodle 2.7,我們的客戶正在報告他們的CustomSQL報告失敗。例如,this query用於報告gradeable的項目,但現在失敗:Moodle模式更改?

SELECT 
u.firstname AS "First", 
u.lastname AS "Last", 
c.fullname AS "Course", 
a.name AS "Assignment" 

FROM prefix_assignment_submissions AS asb 
JOIN prefix_assignment AS a ON a.id = asb.assignment 
JOIN prefix_user AS u ON u.id = asb.userid 
JOIN prefix_course AS c ON c.id = a.course 
JOIN prefix_course_modules AS cm ON c.id = cm.course 

WHERE asb.grade < 0 AND cm.instance = a.id 
AND cm.module = 1 
ORDER BY c.fullname, a.name, u.lastname 

快速查詢或兩個數據庫顯示有零排在prefix_assignment_submissions和prefix_assignment。建議?

+0

是Moodle的使用什麼數據庫引擎? MySQL的? – 2014-12-02 00:51:25

+0

這段代碼使用了Moodle的customSQL插件,但它是後端的MySQL。 – jldugger 2014-12-02 00:52:13

回答

2

分配模塊是通過在2.2的Moodle賦值模塊代替。

舊的分配模塊被默認在Moodle的2.5(我認爲)禁用和Moodle的2.7完全去除。

查詢需要重寫使用assign_submissions表(以及任何其他assign_ *表是相關的)。

1

我沒有一個完整的答案給你,但我可以告訴你,我也管理一個Moodle 2.7系統,而我的prefix_assignment_submissions表也沒有記錄。

另外,我可以給你下面的查詢,我寫上當然最終成績報告。我們使用此查詢保留建模通過學期,並在每學期,其中在mdl_courseidnumber將始終與課程代碼隨後在年/術語代碼年底進口最終成績對我們的學生信息系統,我們的學生信息系統。我想可能是因爲它如何使用mdl_grade_items表有所幫助:有不僅僅是courseitemtypes在該表中。在此表中,未評級項目finalgrade字段中的值應爲NULL。不幸的是,我不知道Moodle內部已經足夠保證每個任務都會有一張記錄,但這是一個開始的地方。

SELECT u.username,u.lastname, u.firstname,c.shortname, left(c.idnumber, character_length(c.idnumber)-6) AS crs_cde, 
      right(c.idnumber,5) as yearterm,cast((gg.finalgrade/case when gi.grademax = 0 then 1 else gi.grademax end) * 100 as numeric(5,2)) finalgrade, 
     (SELECT l.letter 
      FROM mdl_context x 
      INNER JOIN mdl_grade_letters l ON l.contextid = x.id 
      WHERE x.instanceid in (c.id, 0) and l.lowerboundary <= round((gg.finalgrade/case when gi.grademax = 0 then 1 else gi.grademax end)*100,2) 
      ORDER BY x.id desc, lowerboundary desc limit 1) letter 
FROM mdl_grade_grades gg 
INNER JOIN mdl_grade_items gi ON gi.id=gg.itemid 
INNER JOIN mdl_user u ON u.id=gg.userid 
INNER JOIN mdl_course c on c.id = gi.courseid 
INNER JOIN mdl_course_categories c2 on c2.id = c.category 

WHERE gi.itemtype='course' and c2.visible = 1 and gg.finalgrade is not null 
      and char_length(c.idnumber) > 0 and right(c.idnumber,5)='20151'; 

我們從MySQL移動到PostgreSQL,當我們更新到2.7,但只有我需要讓我們的疑問改變了日期處理。

另外值得一提的是,分配模塊被徹底翻修了2.3版本,以及2.3很多文檔的,2.4,2.5,等剛剛從先前版本複製過來。我已經看到這個過程錯過了其他的變化。這特別適用於類似貢獻報告的內容。可能你仍然看到自從2.3版本以來一直無效的sql。