Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL内部连接与3个表?_Sql_Join_Inner Join - Fatal编程技术网

SQL内部连接与3个表?

SQL内部连接与3个表?,sql,join,inner-join,Sql,Join,Inner Join,我试图在一个视图中连接3个表;情况如下: 我有一张表格,里面有申请住在这个大学校园的学生的信息。我有另一个表格,列出了每个学生的大厅偏好(其中3个)。但是这些首选项中的每一个都只是一个ID号,ID号在第三个表中有一个对应的大厅名称(没有设计这个数据库…) 基本上,我在表中有内部连接以及它们的首选项和信息,结果类似于 John Doe | 923423 | Incoming Student | 005 其中005将是HallID。现在我想把这个HallID匹配到第三个表,其中这个表包含Hall

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

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

基本上,我在表中有
内部连接
以及它们的首选项和信息,结果类似于

 John Doe | 923423 | Incoming Student | 005
其中
005
将是
HallID
。现在我想把这个
HallID
匹配到第三个表,其中这个表包含
HallID
HallName

所以我希望我的结果是

 John Doe | 923423 | Incoming Student | Foley Hall <---(INSTEAD OF 005)

如果要加入3个具有相同
ID
的表,我认为应该是这样的:

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

只需将
*
替换为您希望从表中获得的内容。

您只需要第二个内部联接,将您现在拥有的
ID号
链接到第三个表的
ID号
。然后,将
ID编号
替换为
门厅名称
和voilá:)

您可以执行以下操作(我在表字段等上猜测)

根据您对多个大厅的要求,您可以这样做。您只需为每个房间的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

这是对具有相同id的join 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';
员工第一张表。 报告第二个表。
出生第三个表

此查询适用于您

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

已经有很多回应,但总的教训似乎是您可以在where子句中使用多个连接;此外,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

这只适用于一个首选项,但我想如何编辑它以使其适用于3个首选项?(每个首选项对应一列)@Bobsands刚刚更新了我的答案,如果你不想要HallPref号码,请删除这些列。该答案缺乏合理的解释,无法向OP展示如何实现最初的目标。
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
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
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 
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
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
SELECT table1.column1
FROM table1
WHERE table1 > 0 (or whatever you want to specify)
INNER JOIN table1 
ON table1.column1 = table2.column1
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)