小编典典

带有 3 个表的 SQL 内连接?

all

我正在尝试在一个视图中加入 3 个表;情况如下:

我有一张表格,其中包含申请住在这所大学校园的学生的信息。我有另一个表格,列出了每个学生的 Hall Preferences(其中 3
个)。但是这些偏好中的每一个都只是一个ID号,并且ID号在第三张表中有对应的Hall Name(不是设计这个数据库......)。

几乎,我有INNER JOIN他们的偏好和他们的信息,结果就像......

 John Doe | 923423 | Incoming Student | 005

005会在哪里HallID。所以现在我想将它HallID与第三个表匹配,该表包含一个HallIDHallName

非常多,我希望我的结果像......

 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

阅读 86

收藏
2022-03-28

共1个答案

小编典典

您可以执行以下操作(我猜是表格字段等)

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
2022-03-28