成績、課題、ユーザーの 3 つのテーブルがあります。ユーザーが持っている割り当てと完了していない割り当てを見つけられるようにしたいと考えています。ここで 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 |
どんな助けでも大歓迎です。