我试图在一个视图中联接3个表;情况如下:
我有一张桌子,其中包含正在申请住在此大学校园的学生的信息。我还有另一个表格,列出了每个学生的“大厅偏好设置”(其中有3个)。但是这些首选项只是一个ID号,并且ID号在第三张表中有一个对应的Hall Name(不是设计此数据库…)。
差不多,我INNER JOIN在桌子上看到了他们的偏好和他们的信息,结果是…
INNER JOIN
John Doe | 923423 | Incoming Student | 005
哪里005会是HallID。所以现在我想将其与HallID第三个表匹配,该表包含一个HallID和HallName。
005
HallID
HallName
差不多,我希望我的结果像…
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
您可以执行以下操作(我猜在表字段上,等等)
SELECT s.studentname , s.studentid , s.studentdesc , h.hallname FROM students s INNER JOIN hallprefs hp on s.studentid = hp.studentid INNER JOIN halls h on hp.hallid = h.hallid
根据您对多个礼堂的要求,您可以采用这种方式。您只需在每个房间偏好ID的霍尔表上多次加入:
SELECT s.StudentID , s.FName , s.LName , s.Gender , s.BirthDate , s.Email , r.HallPref1 , h1.hallName as Pref1HallName , r.HallPref2 , h2.hallName as Pref2HallName , r.HallPref3 , h3.hallName as Pref3HallName 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 h1 ON r.HallPref1 = h1.HallID INNER JOIN HallData.dbo.Halls AS h2 ON r.HallPref2 = h2.HallID INNER JOIN HallData.dbo.Halls AS h3 ON r.HallPref3 = h3.HallID