2011-09-03 134 views
1

表之一:SQL查询中使用两个表

|user_id|hotel_id| 
| 1 | 4  | 
| 1 | 5  | 
| 2 | 6  | 
| 4 | 7  | 

表二:

|hotel_id|hotel_name|more_ifo| 
| 4 | bla  |bla  | 
| 5 | bla  |bla  | 
| 6 |more bla |bla  | 
| 7 | bla  |bla  | 

我想要得到的某一个用户有例如用户家所有的信息一个酒店4 5 ..有什么帮助?我尝试使用加入,但我想我没有正确使用它..?

+5

向我们展示你尝试过的代码。 –

+2

可能的重复:http://stackoverflow.com/questions/334852/sql-join-query-writing –

回答

3
SELECT users.*, hotels.* 
FROM users 
INNER JOIN hotels 
ON users.hotel_id = hotels.hotel_id 

注意,在SELECT条款使用*被认为是不好的做法;我只在这里做它作为使用连接的一个例子的一部分。

如果你要搜索与特定用户相关联的酒店,只需添加一个WHERE子句这种效果:

SELECT users.*, hotels.* 
FROM users 
INNER JOIN hotels 
ON users.hotel_id = hotels.hotel_id 
WHERE users.user_id = ? 
+0

它不会只给我所有的酒店?我正在寻找只有用户的酒店应该不会有一个“在哪里”的地方? – user605505

+0

请刷新。在您评论之前,我更新了我的答案以包含此类查询。 – cdhowie

+0

非常感谢你的钱! – user605505

1

可以查询用户的所有酒店的exists条款:

select * 
from hotels 
where exists 
     (
     select * 
     from users 
     where users.hotel_id = hotels.hotel_id 
       and users.user_id = @YourUserId 
     ) 
1
Select B.more_ifo 
From table_one A, table_two B 
Where A.hotel_id = B.hotel_id 

这不行?

之后;

Select B.more_ifo 
From table_one A, table_two B 
Where A.hotel_id = B.hotel_id 
AND A.hotel_id IN (4, 5) 
2

t1是别名table onet2是别名table two

select t1.user_id,t2.hotel_id,t2.hotel_name,t2.more_info 
from table_one t1 INNER JOIN table_two t2 
ON t1.hotel_id=t2.hotel_id 
where t1.user_id=1;