我有两个数据库表,一个是注册用户表,另一个是聊天消息表。 我想列出在聊天消息表中有转换的用户。下面的SQL查询做到了,但它显示了 列表中的活动用户名,而不是聚会用户。
##表users_account
reg_userid | Name
--------------------------
1 | Peter
2 | John
userid_a | userid_b
--------------------------
1 | 2
3 | 1
SELECT * FROM chatroom_message cm
INNER JOIN users_account ua ON cm.userid_a = ua.reg_userid
WHERE cm.userid_a = :chat_client
UNION ALL
SELECT * FROM chatroom_message cm
INNER JOIN users_account ua ON cm.userid_b = ua.reg_userid
WHERE cm.userid_b = :chat_client
当前会话用户ID = 1 (Peter)
,所以当我在sql查询上面运行它返回到表格
reg_userid | Name
--------------------------
1 | Peter
我的问题是如何运行SQL查询以检查活动用户是否在聊天消息中userid_a OR userid_b
如果找到结果,则让它返回聊天方的名称John
,作为其联系人聊天列表,同样转到John
当他登录时,结果也会显示他Peter
而不是他自己的
我希望我的结果是约翰登录他的帐户,彼得的名字将显示为他的聊天伙伴。
reg_userid | Name
--------------------------
1 | Peter
我希望我的结果是Peter登录到他的帐户,John的名字将显示为他的聊天伙伴。
reg_userid | Name
--------------------------
2 | John
答案 0 :(得分:0)
我想你差不多了。这可能就是你要找的东西:
SELECT ua.reg_userid, ua.name FROM chatroom_message cm
INNER JOIN users_account ua ON cm.userid_b = ua.reg_userid
WHERE cm.userid_a = :chat_client
UNION ALL
SELECT ua.reg_userid, ua.name FROM chatroom_message cm
INNER JOIN users_account ua ON cm.userid_a = ua.reg_userid
WHERE cm.userid_b = :chat_client
答案 1 :(得分:0)
我认为这个命令可以为你服务
SELECT cm.*,
ua.reg_userid, ua.Name ,
ua2.reg_userid, ua2.Name
FROM chatroom_message cm
INNER JOIN users_account ua
ON cm.userid_a = ua.reg_userid
INNER JOIN users_account ua2
ON cm.userid_b = ua2.reg_userid
WHERE cm.userid_a = :chat_client
<强> [demo] 强>