SQL内部连接有3个表?

我试图在一个视图中连接3个表,情况如下。

我有一个表,包含申请住在这个大学校园的学生的信息。我有另一个表,列出每个学生的宿舍偏好(3个)。但每个偏好只是一个ID号,而ID号在第三个表中有一个相应的宿舍名称(没有设计这个数据库......)。

基本上,我在有他们偏好的表上进行了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
解决办法

你可以做以下事情(我猜测的是表的字段,等等)

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多次连接。

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
评论(4)

如果你有3个具有相同 "ID "的表要连接,我想应该是这样的。

SELECT * FROM table1 a
JOIN table2 b ON a.ID = b.ID
JOIN table3 c ON a.ID = c.ID

只需将*替换为你想从这些表中得到的东西。

评论(0)

你只需要第二个内联,将你现在拥有的 "身份证号码 "与第三个表的 "身份证号码 "联系起来。之后,用 "大厅名称 "替换 "身份证号码",然后就可以了á :)

评论(0)