我有三个表:User_table
,Message_table
和Message_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
的所有内容以及来自Username
和author_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
答案 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