查找缺少 class 的学生的记录

Find records for students missing a class

我有两个表,一个将用户标记为已通过课程,另一个是每个工作代码的课程列表。我正在尝试查询 return 所有缺少 类 的用户的记录。

这是表格:

Attended
--------
empid   jobcode classcode   grade  
555     1       100         A  
555     1       101         A  
444     2       200         A  

JobClassCode
--------
jobcode classcode
1       100
1       101
1       102
2       100
2       200
3       300
3       301

我开始使用此查询来查找缺少用户的 类:

select * from attended at
right outer join jobcodeclass jc on at.jobcode = jc.jobcode and at.classcode = jc.classcode

然后我试图用它来构建一个相关的子查询,但我没有找到 return 用户 ID 和丢失的课程 ID 的方法:

select * from jobcodeclass oq where classcode in (select jc.classcode from attended at 
right outer join jobcodeclass jc on at.jobcode = jc.jobcode 
and at.classcode = jc.classcode and jc.jobcode = oq.jobcode 
and oq.classcode = jc.classcode and empid is null)

通过加入 jobcode,生成每个员工可能需要的所有 类。查看学生参加了哪些:

select ej.empid, ej.jobcode, jss.classcode
from (select distinct empid, jobcode from attended) ej join
     JobClassCode jcc
     on jcc.jobcode = ej.jobcode left join
     attended a
     on a.empid= e.empid and a.jobcode = ej.jobcode and
        a.classcode = jcc.classcode
where a.empid is null;

如果您只需要员工,请使用 select distinct ej.empid