0

私は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」を表示します。前もって感謝します。

4

4 に答える 4

2

このリンクは、まさにあなたが望むものを提供します。以下は、選択クエリです。

select D.StudentName,D.subjectName,Isnull(C.marks,0) as Marks  from TableC C
Right Join
(select * from TableA A,TableB B
) D on C.studentID = D.studentID and C.subjectID = D.subjectID
于 2013-06-20T04:56:37.230 に答える
0

これを使用できます:

SELECT a.StudentName, b.SubjectName, c.Marks
FROM TableA a
LEFT JOIN TableB b
   ON 1 = 1
LEFT JOIN TableC c
   ON b.SubjectID = c.SubjectID
   AND a.StudentID = c.StudentID

デモ: SQL フィドル

于 2013-06-20T04:29:37.177 に答える