私は3つのテーブルを持っています。A、B、C のように表示されます。
Table A | Table B | Table C
---------------------- | ------------------------- |--------------------------------
StudentId StudentName | SubjectId SubjectName | StudentId SubjectId Marks
1 Jack | 101 History | 1 101 33
2 Peter | 102 Science | 2 102 75
3 Samantha | 103 Literature | 3 101 55
----------------------- | ------------------------- | -------------------------------
次のように、各サブジェクトに対して結果を生成するクエリが必要です:-
------------------------------------
StudentName SubjectName Marks
------------------------------------
Jack History 33
Jack Science 0
Jack Literature 0
Peter History 0
Peter Science 75
Peter Literature 0
Samantha History 33
Samantha Science 33
Samantha Literature 33
------------------------------------
望ましい結果が得られなかった次のクエリを使用しました。
1. select a.StudentName, b.SubjectName, c.Marks from a, b, c
where
a.StudentId = c.StudentId
and
c.SubjectId = b.StudentId
2. select a.StudentName, b.SubjectName, c.Marks from a, b, c
where
a.StudentId = c.StudentId
and
c.SubjectId = b.StudentId(+)
3.select a.StudentName, b.SubjectName, c.Marks from a, b, c
where
a.StudentId = c.StudentId
and
(+)c.SubjectId = b.StudentId
私のクエリは、マークがテーブル C にない科目を見逃してしまいますが、テーブル b の 3 つの科目すべてを生徒ごとに繰り返す必要があります。表Cの特定の学生に対して、入力した場所でマークを取得し、科目が入力されていない場合は「0」を表示します。前もって感謝します。