Moodle中作业关联量规:查询课程作业及量规标准的技术需求
完善Moodle量规关联查询的SQL语句
刚好帮你把这个查询补全,直接就能拿到单门课程里所有已用量规的全局概览,完美解决你没法直观查看的问题。
完整SQL查询语句
SELECT cou.fullname AS course_name, ass.name AS assignment_name, def.name AS rubric_name, cri.description AS rubric_criterion FROM mdl_course cou INNER JOIN mdl_assign ass ON ass.course = cou.id INNER JOIN mdl_course_modules cmod ON cmod.course = cou.id AND cmod.instance = ass.id INNER JOIN mdl_context ctx ON ctx.instanceid = cmod.id AND ctx.contextlevel = 70 -- 70代表课程模块上下文 INNER JOIN mdl_grading_areas are ON are.contextid = ctx.id AND are.component = 'mod_assign' -- 指定作业组件 INNER JOIN mdl_grading_definitions def ON def.areaid = are.id AND def.method = 'rubric' -- 筛选量规类型的评分定义 INNER JOIN mdl_grading_criteria cri ON cri.definitionid = def.id -- 可选:指定单门课程,替换成你的课程ID WHERE cou.id = <你的课程ID> ORDER BY cou.fullname, ass.name, def.name;
关键说明
我补充了几个核心关联条件,避免出现无关数据:
- 给
mdl_course_modules加了cmod.instance = ass.id,确保关联的是当前作业对应的课程模块 - 给
mdl_context加了ctx.contextlevel = 70,限定是课程模块级别的上下文(Moodle里不同上下文对应不同level值,70专门指代课程模块) - 给
mdl_grading_areas加了are.component = 'mod_assign',只关联作业类的评分区域 - 给
mdl_grading_definitions加了def.method = 'rubric',确保只筛选用量规(rubric)的评分定义
- 给
返回字段清晰对应需求:
course_name:课程全名assignment_name:使用量规的作业名称rubric_name:对应量规的名称rubric_criterion:量规里的具体标准描述
使用小提示
- 要是想查看所有课程的量规使用情况,直接删掉最后的
WHERE cou.id = <你的课程ID>这一行就行 - 可以根据需求调整
ORDER BY的字段,比如改成按量规名称排序 - 如果需要更多信息(比如作业截止时间、量规创建时间),直接在
SELECT里添加对应字段就行,比如ass.duedate、def.timecreated
内容的提问来源于stack exchange,提问作者Keun
相关产品推荐
相关产品推荐

