我正在尝试在一个视图中加入 3 个表;情况如下:
我有一张表格,其中包含申请住在这所大学校园的学生的信息。我有另一个表格,列出了每个学生的 Hall Preferences(其中 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
根据您对多个大厅的要求,您可以这样做。您只需为每个房间 pref id 多次加入 Hall 表:
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