2013-02-16 106 views
1

我的表看起來像這樣:SQL兩個查找到相同的字段在一個表上

create table users (
    user_id uuid, 
    user_name varchar(32) 
); 

create table messages (
    message_id uuid, 
    from_id uuid references users(user_id), 
    to_id uuid references users(user_id), 
    the_message varchar(140), 
    primary key(message_id) 
); 

如果我做了以下內容:

select * from messages 

我將給予的UUID。我想爲給定的uuid顯示users.user_name。這使我接近:

select 
    users.user_name as from_id, 
    users.user_name as to_id 
from messages 
    join users on users.user_id = messages.from_id 
; 

結果顯示「from」和「to」字段的用戶相同。

如何顯示from_id的user_name以及to_id的user_name?

回答

3

你需要JOIN用戶表兩次 - 一次爲用戶從一次爲用戶:

select 
    messages.*, 
    f.user_name as from_id, 
    t.user_name as to_id 
from messages 
    join users f on f.user_id = messages.from_id 
    join users t on t.user_id = messages.to_id 
; 
+0

絕對美麗。對我來說真正的塊是加入的別名。沒有它,數據庫會抱怨你已經加入了用戶表。 – Buddy 2013-02-16 03:28:41

+0

@Buddy - np,很高興能幫到你! – sgeddes 2013-02-16 03:30:06

相關問題