你好,我正在Moodle中做一个项目,并且有一个疑问是否可以实现。我已经尝试将这3个查询合并为一个。
select c.fullname, count(1) as total from {role_assignments} ra INNER JOIN
{logstore_standard_log} as lsl ON ra.userid = lsl.userid
INNER JOIN {course} as c on lsl.courseid =c.id
WHERE lsl.action="viewed" and lsl.target = "course" GROUP BY c.fullname
select c.fullname, count(1) as student from {role_assignments} ra INNER JOIN
{logstore_standard_log} as lsl ON ra.userid = lsl.userid
INNER JOIN {course} as c on lsl.courseid =c.id
WHERE ra.roleid=5 AND lsl.action="viewed" and lsl.target = "course" GROUP BY c.fullname
select c.fullname, count(1) as rest from {role_assignments} ra INNER JOIN
{logstore_standard_log} as lsl ON ra.userid = lsl.userid
INNER JOIN {course} as c on lsl.courseid =c.id
WHERE ra.roleid!=5 AND lsl.action="viewed" and lsl.target = "course" GROUP BY c.fullname
从我所看到的来看,这可能可以通过子查询来完成,但是我似乎找不到解决方法。
感谢您的帮助
select c.fullname, count(1) as total, NULL as student, null as rest from {role_assignments} ra INNER JOIN
{logstore_standard_log} as lsl ON ra.userid = lsl.userid
INNER JOIN {course} as c on lsl.courseid =c.id
WHERE lsl.action="viewed" and lsl.target = "course" GROUP BY c.fullname
UNION
select c.fullname, null, count(1) as student, null from {role_assignments} ra INNER JOIN
{logstore_standard_log} as lsl ON ra.userid = lsl.userid
INNER JOIN {course} as c on lsl.courseid =c.id
WHERE ra.roleid=5 AND lsl.action="viewed" and lsl.target = "course" GROUP BY
c.fullname
UNION
select c.fullname, null, null, count(1) as rest from {role_assignments} ra INNER JOIN
{logstore_standard_log} as lsl ON ra.userid = lsl.userid
INNER JOIN {course} as c on lsl.courseid =c.id
WHERE ra.roleid!=5 AND lsl.action="viewed" and lsl.target = "course" GROUP BY
c.fullname
PS:注意select
部分