2014-12-02 87 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。