[英]SQL Query to return multiple data from inner join
我有两个数据库表,一个是注册用户表,另一个是聊天消息表。 我想在聊天消息表中列出进行了转换的用户。 下面的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
现在不是他自己的
我希望我的结果是John登录到他的帐户,Peter的名字将显示为他的聊天伙伴。
reg_userid | Name
--------------------------
1 | Peter
我希望我的结果是Peter登录到他的帐户,John的名字将显示为他的聊天伙伴。
reg_userid | Name
--------------------------
2 | John
我想你快到了。 这可能是您要寻找的:
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
我认为这个命令可以为您服务
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.