0

学生の名、姓、SID、メジャー、マイナーを表示しようとしています。各生徒のコース、CID、会議時間も同様です。ただし、ブリッジテーブルは私を混乱させます。Union または Multi-Table Join を実行するかどうか、または何を実行するかはわかりません。助けてください!

ここに画像の説明を入力

4

3 に答える 3

3

これは宿題なので、質問に直接答える代わりに、いくつかのヒントを提供します。

と を検討する必要がUNIONありJOINsます。

UNION は、複数のクエリを同じデータセットで返す場合に使用されます。各フィールドのデータ型が類似していて、各クエリのフィールド数が同じである必要があります。したがって、この特定の質問では、を使用するのは理にかなっていUNIONますか? 学生とそのコースを一列に並べたいので、おそらくそうではありません。

このタイプのクエリでは、JOIN. オンラインで利用できる JOIN の非常に役立つ視覚的な説明があります。SQL を学習している間は、手元に置いておくことをお勧めします。

SQL 結合の視覚的な説明

学生データとそのコース情報が必要なので、この 2 つを取得する唯一の方法は、tblRegistration. このテーブルを使用すると、クエリで探している結果が得られるはずです。

編集:

UNIONコメンターが 2 番目の図面は ではないことを指摘しているので、JOINここで私が同意しないのは、それを証明する例です。

上記の AUNIONは、2 つのクエリを 1 つの結果セットに結合します。UNIONデモを使用した sqlfiddle を次に示します。

フィドル 1

FULL OUTER JOIN 結合条件を満たさない左または右のテーブルの行が結果セットに含まれ、もう一方のテーブルに対応する出力列が に設定されることを指定しNULLます。これは、 によって通常返されるすべての行に追加されますINNER JOINFULL OUTER JOINデモを使用した sqlfiddle を次に示します。

フィドル2

ご覧のとおり、両方のクエリの製品は同じではないためFULL OUTER JOIN、図の a は ではありませんUNION

于 2012-04-19T21:34:26.790 に答える
0
SELECT *
FROM tblStudent AS s
LEFT OUTER JOIN tblRegistration AS r
  ON s.SID = r.SID
LEFT OUTER JOIN tblCourse AS c
  ON c.CID = r.CID
于 2012-04-19T21:27:56.823 に答える
0

オラクルの構文:

SELECT stu.FirstName, 
       stu.LastName, 
       stu.Major, 
       stu.Minor, 
       reg.SID, 
       cou.CID, 
       cou.MeetingTime
FROM 
      tblStudent as stu,
      tblRegistration as reg,
      tblCourse as cou
WHERE
      stu.SID(+) = reg.SID 
      and reg.CID = cou.CID
于 2012-04-19T21:32:56.300 に答える