我有一张桌子,其中包含正在申请住在这个大学校园的学生的信息。我还有另一个表格,列出了每个学生的Hall Preferences(其中的3个)。但是这些首选项只是一个ID号,并且ID号在第三张表中有一个对应的Hall Name(不是设计此数据库...)。
相当多,我在
INNER 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
#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
根据您对多个大厅的要求,您可以执行此操作。您只需为每个房间的偏好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
#2 楼
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
评论
这个答案缺乏合理的解释来说明OP如何实现原始目标。
– gaige
2013年4月2日在2:15
#3 楼
如果您要连接3个具有相同ID
的表,我想是这样的:SELECT * FROM table1 a
JOIN table2 b ON a.ID = b.ID
JOIN table3 c ON a.ID = c.ID
只需将
*
替换为您要从表中获取的内容。#4 楼
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
#5 楼
您只需要第二个内部联接即可将您现在拥有的ID Number
链接到第三张表的ID Number
。然后,用ID Number
替换Hall Name
并贴上:) #6 楼
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;
#7 楼
尽管有很多回应,但是总的教训似乎是,您可以在where子句中使用多个JOINS;还有techonthenet.com(我的老板向我推荐了它,这就是我找到它的方式),如果您还有其他问题并且只想尝试解决,那么它也提供了很好的SQL教程。SELECT table1.column1
FROM table1
WHERE table1 > 0 (or whatever you want to specify)
INNER JOIN table1
ON table1.column1 = table2.column1
#8 楼
这是对具有相同ID的联接3表的正确查询**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';
员工第一张表。
报告第二张表。
出生第三张表
#9 楼
SELECT
A.P_NAME AS [INDIVIDUAL NAME],B.F_DETAIL AS [INDIVIDUAL FEATURE],C.PL_PLACE AS [INDIVIDUAL LOCATION]
FROM
[dbo].[PEOPLE] A
INNER JOIN
[dbo].[FEATURE] B ON A.P_FEATURE = B.F_ID
INNER JOIN
[dbo].[PEOPLE_LOCATION] C ON A.P_LOCATION = C.PL_ID
#10 楼
该查询将为您服务Select b.id as 'id', u.id as 'freelancer_id', u.name as
'free_lancer_name', p.user_id as 'project_owner', b.price as
'bid_price', b.number_of_days as 'days' from User u, Project p, Bid b
where b.user_id = u.id and b.project_id = p.id
#11 楼
select products.product_id, product_name, price, created_at, image_name, categories.category_id, category_name,brands.brand_id, brand_name
FROM products INNER JOIN categories USING (category_id) INNER JOIN brands USING(brand_id)
#12 楼
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
评论
这仅适用于一个首选项,但是我要如何对其进行编辑以使其适用于3个首选项? (每个首选项一列)
–鲍勃·桑德斯(Bob Sanders)
2012年4月17日在17:05
@BobSanders刚刚更新了我的答案,然后,如果您不想HallPref编号,请删除这些列
– Taryn♦
2012年4月17日在17:09