如果我有两个数据库表
users
-> (id, username)
和
messages
-> (msg_id, sender_id, rec_id, text)
他们都同时在users.id = messages.sender_id
和users.id = messages.rec_id
上加入,因此我如何按照以下步骤打印结果
msg_id | sender | reciver | text
------------------------------------
1 | david | michael | hello friend
2 | eva | robert | pick me up
我已经尝试过
SELECT users.*, messages.*
FROM messages
INNER JOIN users
ON users.id = messages.sender_id
AND users.id = messages.rec_id
但是它似乎没有我想要的..所以任何想法
更新它似乎无法正常工作,因为它使发送者和接收者的名字相同,这是错误的!
msg_id | sender | reciver | text
------------------------------------
1 | david | david | hello friend
2 | eva | eva | pick me up
答案 0 :(得分:3)
您需要两个join
:
SELECT m.*, us.username as sender_name, ur.username as receiver_nae
FROM messages m JOIN
users us
ON us.id = m.sender_id JOIN
users ur
ON ur.id = m.rec_id;
答案 1 :(得分:3)
您可能想多次加入
SELECT users1.*, users2.*,messages.*
FROM messages
INNER JOIN users1
ON users1.id = messages.sender_id
INNER JOIN users2
AND users2.id = messages.rec_id
答案 2 :(得分:1)
在当前条件下,用户ID等于发送者ID和接收者ID,这意味着您将只查询某人自己发送的消息-这可能不是您想要实现的。相反,您可以在users
上加入两次,一次给发送者,一次给接收者:
SELECT m.msg_id, s.username AS sender, r.username AS receiver, m.text
FROM messages m
JOIN users s ON m.sender_id = s.id
JOIN users r ON m.rec_id = r.id