4

したがって、次の表があり、少し頭痛の種になっています。私がやりたいのは、特定のコースのすべての課題を課題情報 (成績、平均成績など) と共に返すクエリを作成することです。学生が課題を提出しなかった場合、または課題を提出していない場合は、これらのフィールドで単に null を返します。 . 私は試してみleft joinましたが、それらのテーブルについてそれを理解することができません。それらは古くて構造が悪いですが、私が持っているのはそれだけです。

CourseInst_Studentsコースのインスタンスで学生の登録を保持します

| ID_CourseInst| SSN                 |
| =============|=====================|
| 24744        | 080590-XXXX         | my ssn

Assignments_CourseInst課題をコースのインスタンスに登録します

| ID_Assignment| ID_CourseInst       |
| =============|=====================|
| 37978        | 24744               |
| 37979        | 24744               |
| 37992        | 24744               |
| 38046        | 24744               |

課題

 | ID_Assignment| Title                     |
 | =============|===========================|
 | 37978        | Og þá var kátt í höllinni |
 | 37979        | Test for Assignments      |
 | 37992        | Test 2                    |
 | 38046        | Eitthvað gott verkefni    |

Assignments_Solutions学生グループ (1 対多) の情報 (成績、提出日など) を保持します。学生が解決策を提出していない場合、記録はありません。

 | ID_Assignment| ID_Group                  | Grade   |
 | =============|===========================|=========|
 | 37978        | 808046                    | 10      | only one group has handed in.

Assignments_Solutions_Groups生徒の SSN をグループに登録します。

| ID_Group     | SSN                       |
| =============|===========================|
| 808046       | 221180-XXXX               | not my SSN (see mine above)

SSN の割り当てを検索するときの私の好みの結果は次のようになります。

| ID_Assignment| Title                     | Grade   |
| =============|===========================|=========|
| 37978        | Og þá var kátt í höllinni | NULL    |
| 37979        | Test for Assignments      | NULL    |
| 37992        | Test 2                    | NULL    |
| 38046        | Eitthvað gott verkefni    | NULL    |

誰でもこれを理解できますか?ありがとう!

アップデート

ここに私がこれまでに持っているものがあります

select A.ID_Assignment, A.Title, ASo.Grade
from CourseInst_Students as CS
join Assignments_CourseInst as AC on CS.ID_CourseInst= AC.ID_CourseInst
join Assignments as A on AC.ID_Assignment = A.ID_Assignment
left join Assignments_Solutions as ASo on A.ID_Assignment = ASo.ID_Assignment
left join Assignments_Solutions_Groups as ASGs on ASo.ID_Group = ASGs.ID_Group
where CS.SSN = '080590-XXXX'
      AND CS.id_namskeid = 24744

次の結果が得られます。

| ID_Assignment| Title                     | Grade   |
| =============|===========================|=========|
| 37978        | Og þá var kátt í höllinni | 10      | <- this is someone else's handin. I want NULL here
| 37979        | Test for Assignments      | NULL    | 
| 37992        | Test 2                    | NULL    |
| 38046        | Eitthvað gott verkefni    | NULL    |
4

2 に答える 2