我有三个表:成绩、作业、用户。我希望能够找到用户已经完成和尚未完成的任务。我知道我们在这里使用 OUTER 连接,但我似乎无法获得正确的 SQL 来复制我想要的内容。在我的表格中,1 名学生已完成 1 项作业(显示 1、3、1 名学生已完成 2 项作业,1 名学生已完成 3 项作业,请在下方发布完整表格
assignment table:
assignmentID | assignmentType | totalScore |
-------------|-----------------|------------|
1 | Assignment | 100 |
2 | Assignment | 100 |
3 | Assignment | 100 |
4 | Test | 200 |
grade table:
gradeID | studentID | assignmentID | grade |
---------|-------------|----------------|---------|
1 | 3 | 1 | 100 |
2 | 3 | 2 | 100 |
3 | 3 | 3 | 100 |
4 | 2 | 1 | 100 |
5 | 2 | 2 | 100 |
6 | 1 | 1 | 100 |
student table:
studentID | studentName |
-----------|-------------|
1 | John |
2 | Jane |
3 | Joe |
因此,在上述场景中,John 将完成 1 个作业,3 个未完成,Jane 将完成 2 个作业,2 个未完成作业,而 Joe 将完成 3 个作业,1 个未完成作业。
希望输出为:
studentID | achievementID | grade |
----------|---------------|-------|
1 | 1 | 100 |
1 | 2 | NULL |
1 | 3 | NULL |
1 | 4 | NULL |
2 | 1 | 100 |
2 | 2 | 100 |
2 | 3 | NULL |
2 | 4 | NULL |
3 | 1 | 100 |
3 | 2 | 100 |
3 | 3 | 100 |
3 | 4 | NULL |
任何帮助是极大的赞赏。