我在SQL中找不到3个表格缺少数据

问题描述

enter image description here

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周。

请帮帮我。

解决方法

如果交叉联接EngineWeek表以获取所有组合,然后使用Student确定哪里没有not exists记录。

TimeSheet