查找缺少 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
。
我有两个表,一个将用户标记为已通过课程,另一个是每个工作代码的课程列表。我正在尝试查询 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
。