SELECT c.fullname, c.shortname, g.name, u.firstname, u.lastname, r.shortname
FROM prefix_course AS c
JOIN prefix_role_assignments AS ra
JOIN prefix_groups AS g ON c.id = g.courseid
JOIN prefix_role AS r
JOIN prefix_user AS u
WHERE c.groupmode > 0 AND WHERE ra.roleid > 6
我想输入角色老师的ID号,而不是6。
为什么不简单地。
SELECT c.fullname, c.shortname, g.name, u.firstname, u.lastname, r.shortname
FROM prefix_course AS c
JOIN prefix_context ctx ON ctx.instanceid = c.id AND ctx.contextlevel = 50
JOIN prefix_role_assignments AS ra ON ra.contextid = ctx.id
JOIN prefix_groups AS g ON c.id = g.courseid
JOIN prefix_role AS r ON r.id = ra.roleid
JOIN prefix_user AS u ON u.id = ra.userid
WHERE c.groupmode > 0 AND r.shortname = 'teacher'
其中'50'是'course'的上下文级别。这将显示所有在课程级别拥有 "教师 "角色的用户,给出教师的名字,课程的名字和课程中存在的所有组的列表(每个组将有一个完整的行,并且不会考虑教师是否是该组的成员)。
请注意,这将只包括 "非编辑教师 "在列表中,如果您希望 "教师 "和 "非编辑教师",您将需要更改最后一行。
WHERE c.groupmode > 0 AND (r.shortname = 'teacher' OR r.shortname = 'editingteacher')