2014-02-24 91 views
0

我一直在堆棧中尋找類似的問題,但是我找不到幫助解決這個問題的問題,或者我無法理解它。 我有3張桌子。SQL - 檢查記錄是否存在於多個表中

Users 
+---------+------+--------------+ 
| id_user | name | age   | 
+---------+------+--------------+ 
| user1 | John | 51   | 
+---------+------+--------------+ 
| user2 | Jane | 65   | 
+---------+------+--------------+ 
| user3 | Katie| 51   | 
+---------+------+--------------+ 
| user4 | Marck| 65   | 
+---------+------+--------------+ 


City1 
+---------+------+--------------+ 
| id_user | time | street  | 
+---------+------+--------------+ 
| user1 | 8 | 111111111111 | 
+---------+------+--------------+ 
| user2 | 5 | 222222222222 | 
+---------+------+--------------+ 

City2 
+---------+------+--------------+ 
| user_id | time | street  | 
+---------+------+--------------+ 
| user1 | 6 | 111111111111 | 
+---------+------+--------------+ 
| user4 | 7 | 222222222222 | 
+---------+------+--------------+ 

我試圖做一個查詢,以便知道是否存在City1和City2表中的特定id_user。我真的不知道如何去構建它。例如,完成id_user = user1,我想接收類似city1 = true,city2 = true的內容。 (在這兩個表中,user1都存在);或完成id_user = 2,接收city1 = true,city2 = false。

任何想法如何做到這一點?

感謝很多

+0

您是否嘗試過自己創建任何查詢? –

+0

爲什麼你有兩張城市桌? – Strawberry

回答

4

如果用戶ID未在每個表中重複的,那麼你可以使用left outer join

select u.*, 
     (c1.id_user is not null) as InCity1, 
     (c2.id_user is not null) as InCity2 
from users u left outer join 
    city1 c1 
    on u.id_user = c1.id_user left outer join 
    city2 c2 
    on u.id_user = c2.id_user; 

您可以添加where條款,如果你想看到的只有一個信息用戶。

+1

工作小提琴,http://sqlfiddle.com/#!2/95d53/3 – Anurag