2011-09-03 83 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;