目前,我正在创建 Ad Hoc 查询以从我们的 Moodle 数据库中提取。我试图收集客户名称,他们完成了什么课程,他们收到了什么成绩,以及他们何时完成考试或被评分。
我发现 Moodle 中的grade_grades
表将允许我提取所有这些数据值。但是,一旦课程完成,我们就有一个设置的取消注册过程。一旦取消注册过程结束,报告从grade_grades
移动到grade_grades_history
。
在下面的这个查询中,我能够拉出所有我试图查询的信息,除了时间。我知道我目前不要求查询拉那个值,因为当我这样做的时候它会查询。
SELECT
prefix_grade_items.itemname,
prefix_grade_items.grademax,
ROUND(prefix_grade_grades_history.finalgrade, 0) AS finalgrade,
prefix_user.firstname,
prefix_user.lastname,
prefix_user.username
FROM prefix_grade_grades_history
JOIN prefix_user ON prefix_grade_grades_history.userid = prefix_user.id
JOIN prefix_grade_items ON prefix_grade_grades_history.itemid = prefix_grade_items.id
WHERE (prefix_grade_items.itemname IS NOT NULL)
AND (prefix_grade_items.itemtype = 'mod' OR prefix_grade_items.itemtype = 'manual')
AND (prefix_grade_items.itemmodule = 'quiz' OR prefix_grade_items.itemmodule IS NULL)
AND (prefix_grade_grades_history.timemodified IS NOT NULL)
AND (prefix_grade_grades_history.finalgrade > 0)
AND (prefix_user.deleted = 0)
第一部分的大部分是我的目标拉。第二部分是我希望它如何交付以及额外的标准来整理 NULL 数据。
当我最后写了一个查询来检查 Moodle 的最终成绩时,根据您的列需要调整它看起来更像这样:
SELECT c.shortname,
gi.grademax,
round(gg.finalgrade,0) as finalgrade,
round((gg.finalgrade/case when gg.rawgrademax = 0 then 1 else gg.rawgrademax end)*100,0) as percent_final,
u.firstname,
u.lastname,
u.username,
FROM_UNIXTIME(gg.timemodified,'%W %e %M, %Y') as Date_Completed
FROM prefix_grade_grades_history gg
INNER JOIN prefix_grade_items gi ON gi.id=gg.itemid and gi.itemtype='course'
INNER JOIN prefix_user u ON u.id=gg.userid
INNER JOIN prefix_course c on c.id = gi.courseid
WHERE gg.finalgrade > 0
AND gg.timemodified IS NOT NULL
AND u.deleted = 0
AND gg.timemodified >= UNIX_TIMESTAMP( :start_date )
AND ggh.timemodified <= UNIX_TIMESTAMP( :end_date )
本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处
评论列表(3条)