最近升级到Moodle 2.7,我们的客户报告他们的CustomSQL报告失败了。例如,this query用于报告可评级项目,但现在失败:
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
对DB的快速查询或两个快速查询显示prefix_assignment_submissions和prefix_assignment中有零行。建议?
答案 0 :(得分:2)
Moodle 2.2中的assign模块取代了赋值模块。
Moodle 2.5中默认禁用旧的赋值模块(我认为),并在Moodle 2.7中完全删除。
查询将需要重写以使用assign_submissions表(以及任何其他相关的assign_ *表)。
答案 1 :(得分:1)
我没有完整的答案,但我可以告诉你我还管理了一个Moodle 2.7系统,我的prefix_assignment_submissions
表也没有记录。
此外,我可以向您提供以下查询,我写这篇查询报告课程最终成绩。我们在整个学期使用此查询进行保留建模,并在每个学期结束时将最终成绩导入我们的学生信息系统,其中idnumber
表中的mdl_course
将始终与所遵循的课程代码相匹配通过学生信息系统中的年/期代码。我认为它可能有用,因为它使用mdl_grade_items
表的方式:该表中的itemtypes
多于course
。在此表格中,未评分的项目在NULL
字段中的值为finalgrade
。不幸的是,我不知道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';
当我们更新到2.7时,我们从MySQL迁移到PostgreSQL,但我需要对查询进行的唯一更改是日期处理。
还值得一提的是,版本2.3的分配模块已经彻底检修过,2.3,2.4,2.5等许多文档只是从以前的版本中复制而来。我已经看到这个过程会遗漏其他变化。这尤其适用于贡献报告之类的内容。您可能仍然看到自2.3以来无效的sql。