SQL内部连接3表?

我试图在视图中join3个表格; 这里是情况:

我有一个表格,里面包含申请住在这所大学校园的学生的信息。 我有另外一张表,列出了每个学生的大厅首选项(其中3个)。 但是,这些偏好中的每一个都只是一个ID号,而ID号在第三个表中有一个对应的名字(没有devise这个数据库…)。

很多,我有他们的喜好,他们的信息内部join桌子上,结果是像…

John Doe | 923423 | Incoming Student | 005 

005将是HallID。 所以现在我想把HallID与第三个表相匹配,这个表包含一个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 

编辑:

根据您对多个大厅的要求,您可以这样做。 您只需join您的礼堂表多次为每个房间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 
 SELECT column_Name1,column_name2,...... From tbl_name1,tbl_name2,tbl_name3 where tbl_name1.column_name = tbl_name2.column_name and tbl_name2.column_name = tbl_name3.column_name 

如果你有3个同一个ID表join,我想这将是这样的:

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

只需将*replace为你想从表中获得的内容即可。

 SELECT table1.col,table2.col,table3.col FROM table1 INNER JOIN (table2 INNER JOIN table3 ON table3.id=table2.id) ON table1.id(f-key)=table2.id AND //add any additional filters HERE 

您只需要第二个内部连接,将您现在的ID Number到第三个表的ID Number 。 之后,用Hall NamereplaceID Number ,然后瞧:)

这是正确的查询连接3表具有相同的ID **

 select a.empname,a.empsalary,b.workstatus,b.bonus,c.dateofbirth from employee a, Report b,birth c where a.empid=b.empid and a.empid=c.empid and b.empid='103'; 

员工第一张桌子。 报告第二个表格。 出生第三表

 SELECT * FROM PersonAddress a, Person b, PersonAdmin c WHERE a.addressid LIKE '97%' AND b.lastname LIKE 'test%' AND b.genderid IS NOT NULL AND a.partyid = c.partyid AND b.partyid = c.partyid; 
 select empid,empname,managename,[Management ],cityname from employees inner join Managment on employees.manageid = Managment.ManageId inner join CITY on employees.Cityid=CITY.CityId id name managename managment cityname ---------------------------------------- 1 islam hamza it cairo