2013-02-16 116 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

相关问题