问题描述
select * from TimeSheet
WeekID StudentID Hours
1 1 40
2 1 40
4 1 40
1 2 40
2 2 40
3 2 4
4 2 40
1 4 40
3 3 40
select * from Week
WeekID
1
2
3
4
select * from Student
StudentID StudentName
1 ABC
2 XYZ
3 ASD
4 QWE
加入后,我得到这些结果。
如果使用三个表获取此数据
select TS.WeekID,TS.StudentID,TS.[Hours],SS.StudentID,WW.WeekID
FROM TimeSheet TS
left JOIN Student SS ON SS.StudentID = TS.StudentID
left JOIN [Week] WW ON WW.WeekID = TS.WeekID
WeekID StudentID Hours StudentID WeekID
1 1 40 1 1
2 1 40 1 2
4 1 40 1 4
1 2 40 2 1
2 2 40 2 2
3 2 4 2 3
4 2 40 2 4
3 3 40 3 3
1 4 40 4 1
期望结果是...
WeekID StudentID Hours StudentID WeekID
3 1 40 1 2
1 3 40 3 3
2 3 40 3 3
4 3 40 3 3
2 4 40 4 1
3 4 40 4 1
4 4 40 4 1
我想举个例子:
- 缺少学生1和第3周
- 学生2缺一星期
- 学生3 1,2和4周不见了
- 缺少学生4、2、3、4周。
请帮帮我。
解决方法
如果交叉联接Engine
和Week
表以获取所有组合,然后使用Student
确定哪里没有not exists
记录。
TimeSheet