我有以下数据库模式:
messages
senderId: user
receiverId: user
我正在尝试获取附有发送方用户记录和接收方用户记录的所有消息,但是我不确定如何执行此操作。在访问数据库之前,我使用登录用户的用户ID来获取登录用户的所有消息:
GET /messages?userId=some-id
我的SQL查询:
SELECT * from messages
WHERE senderId=userId
OR receiverId=userId
我想我知道如何进行联接以获取用户(如果这是他的ID):
SELECT messages.*, users.* from messages
INNER JOIN users ON messages.senderId = userId OR messages.receiverId = userId
WHERE senderId=userId
OR receiverId=userId
但是我不知道如何加入“其他”用户的信息。我也不知道我在上面尝试的查询是否可以正常工作,因为我尚未对其进行测试。
感谢您的帮助
基本上,我希望消息记录的所有数据以及2个关联用户的所有数据(json,不确定如何将其表示为列):
message: {
title: 'message title',
body: 'message body....',
sender: {
name: '',
email: '',
etc...
},
receiver: {
name: '',
email: '',
etc...
}
}
希望有帮助
答案 0 :(得分:1)
您只是想获得两个名字吗?
select m.*, um.name as sender_name, ur.name as receiver_name
from messages m join
users us
on m.senderid = us.userid join
users ur
on m.receiverid = ur.userid
where @userid in (m.sender_id, m.receiverid);