有两个表: CourseModules 和学生。
学生可以参加不同的模块。如果学生继承该模块,它将存储在带有moduleID的StudentsModule下的数据库中。
表courseModules定义了学生获取证书所需的所有模块。
我需要概述所有持有证书的学生。
在示例中,您可以看到唯一拥有证书的学生是学生ID:111221
我完全坚持这个。它需要在一个查询中完成,而不是多个,不使用循环。
我尝试了以下内容:
SELECT StudentID, ModuleID<br>
FROM StudentsModule<br>
WHERE ModuleID ALL (
SELECT OnderdeelID
FROM CourseModules
GROUP BY groupID
)
但我被卡住了。
答案 0 :(得分:1)
试试这个
select s.studentId, s.moduleId, cc.courseCount, cd.courseDone
from StudentsModule s
join CourseModulec on s.moduleId = c.moduleId
join (select count(*) as courseCount, groupId from CourseModule group by groupId) as cc on cc.groupId = c.groupId
join (select count(*) as courseDone, studentId from StudentsModule s1 join CourseModule c1 on s1.moduleId = c1.moduleId group by s1.studentId) as cd on cd.studentId = s.studentId
where cc.courseCount = cd.courseDone