在SQL中可能吗? moodle

问题描述 投票:0回答:2

你好,我正在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

从我所看到的来看,这可能可以通过子查询来完成,但是我似乎找不到解决方法。

“所需结果”

感谢您的帮助

sql moodle
2个回答
0
投票
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部分
© www.soinside.com 2019 - 2024. All rights reserved.