在一个查询中双重选择用户名

时间:2016-08-19 08:51:24

标签: mysql

我有三个表:User_tableMessage_tableMessage_table_to

User_table字段:

USER_ID

用户名

Message_table字段:

MESSAGE_ID

AUTHOR_ID

MESSAGE_TEXT

message_time

Message_table_to包含此字段字段:

MESSAGE_ID

AUTHOR_ID

USER_ID

我需要来自message_table的所有内容以及来自Usernameauthor_id的名称user_id。如何通过一个查询从usernames获取user_table

注意:我尝试了以下查询:

$sql = "SELECT u.user_id, u.username, p.message_id, p.message_text,     p.message_time, p.author_id, k.message_id, k.user_id 
    FROM User_table u, Message_table p, Message_table_to k
    WHERE 
    k.message_id = p.message_id
    AND p.author_id = u.user_id
  ORDER BY k.message_id DESC 
 LIMIT 5
    "; 

但我只获取p.author_id的用户名,而不是k.user_id

中的用户名

1 个答案:

答案 0 :(得分:0)

您需要使用别名加入user_table两次才能获取发件人和收件人的用户名。我还将查询更改为使用显式连接而不是标准:

SELECT u1.user_id, u1.username as sender, p.message_id, p.message_text,     p.message_time, p.author_id, k.message_id, k.user_id, u2.username as recipient 
FROM User_table u1
INNER JOIN Message_table p ON p.author_id = u1.user_id
INNER JOIN Message_table_to k ON k.message_id = p.message_id
INNER JOIN User_table u2 ON k.user_id=u2.user_id
ORDER BY k.message_id DESC 
LIMIT 5