SQLで3つのテーブルをインナー結合するには?
3つのテーブルをビューで結合しようとしているのですが、以下のような状況です。
この大学のキャンパスに住むことを希望している学生の情報が入っているテーブルがあります。別のテーブルには、各学生のホールの好み(3つ)がリストアップされています。しかし、これらの希望はそれぞれ単なるID番号であり、ID番号は3番目のテーブルで対応するホール名を持っています(このデータベースを設計したわけではありません...)。
かなりの確率で、私は彼らの好みと彼らの情報を持つテーブルに INNER JOIN
を行い、結果は次のようになります。
John Doe | 923423 | Incoming Student | 005
ここで、005
はHallID
になります。このテーブルには HallID
と HallName
が含まれていますが、この HallID
を 3 番目のテーブルにマッチさせたいと思います。
つまり、結果は次のようになります。
John Doe | 923423 | Incoming Student | Foley Hall <---(INSTEAD OF 005)
現在、私が持っているものは以下の通りです。
SELECT
s.StudentID, s.FName,
s.LName, s.Gender, s.BirthDate, s.Email,
r.HallPref1, r.HallPref2, r.HallPref3
FROM
dbo.StudentSignUp AS s
INNER JOIN RoomSignUp.dbo.Incoming_Applications_Current AS r
ON s.StudentID = r.StudentID
INNER JOIN HallData.dbo.Halls AS h
ON r.HallPref1 = h.HallID
307
3
以下のようにすることができます(テーブルのフィールドなどについては推測です)。
複数のホールのリクエストに基づいて、このようにすることができます。各部屋のプレフィクスIDに対して、Hallテーブルを複数回結合するだけです。
同じ
ID
を持つ3つのテーブルを結合する場合は、次のようになると思います。ただ、
*
をテーブルから取得したいものに置き換えるだけです。今持っている「ID番号」を3番目のテーブルの「ID番号」にリンクする2番目の内部結合が必要なだけです。その後、「ID番号」を「ホール名」に置き換えれば出来上がりですá :)