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 Name
replaceID 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