我有一个与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
答案 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