Moodle SQL匹配注册

时间:2016-10-25 09:04:44

标签: sql moodle

我有一个与SQL命令相关的问题 - 我需要获取所有注册Moodle课程的学生的列表,但我还需要了解每个学生的注册方式,如手册,横幅插件等,这是我目前拥有的SQL,但我似乎无法获得注册部分?

在Moodle 3.1上

由于 康纳。

SELECT
c.id AS courseid, 
c.idnumber AS crn,
c.fullname, 
u.username, 
u.firstname, 
u.lastname, 
u.email                            
FROM mdl_role_assignments ra 
JOIN mdl_user u ON u.id = ra.userid
JOIN mdl_role r ON r.id = ra.roleid
JOIN mdl_context cxt ON cxt.id = ra.contextid
JOIN mdl_course c ON c.id = cxt.instanceid
WHERE ra.userid = u.id                              
AND ra.contextid = cxt.id
AND cxt.contextlevel = 50
AND cxt.instanceid = c.id
AND roleid = 46
ORDER BY c.id

2 个答案:

答案 0 :(得分:0)

您的查询不会显示已加入课程的学生,而只显示具有ID' 46'在课程级别分配(我假设您的系统' 46'是您感兴趣的学生角色)。

我可以在此处找到类似问题的答案:https://stackoverflow.com/a/22166653/1148411

从该查询开始,只需添加' e.enrol AS enrolmenttype'到要返回的字段列表, 应该是你想要的。

答案 1 :(得分:0)

此查询解决了这个问题,在这种情况下,我们以学年'2016'结束了模块ID。

SELECT c.idnumber, c.shortname, e.enrol, u.username, u.firstname, u.lastname FROM mdl_enrol e
INNER JOIN mdl_course c ON (c.id = e.courseid)
INNER JOIN mdl_user_enrolments ue ON (e.id = ue.enrolid)
INNER JOIN mdl_user u ON (ue.userid = u.id) 
WHERE c.idnumber REGEXP '\.2015$'
ORDER BY c.idnumber