[英]SQL Query to return multiple data from inner join
I have two database table, one is registerd user table and the other one is chat message table. 我有两个数据库表,一个是注册用户表,另一个是聊天消息表。 I want to list users that have conversion in chat message table. 我想在聊天消息表中列出进行了转换的用户。 The below sql query does it but it show the active user name as on the list instead of the party user. 下面的sql查询可以执行此操作,但是它在列表中显示的是活动用户名,而不是聚会用户。
## Table users_account ##表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
Current Session User Id = 1 (Peter)
, so when i run above sql query it return below table 当前会话用户ID = 1 (Peter)
,因此当我在sql查询上运行时,它返回表下方
reg_userid | Name
--------------------------
1 | Peter
My problem is how do i run an sql query to check if the active user is in chat message userid_a OR userid_b
我的问题是如何运行sql查询以检查活动用户是否在聊天消息userid_a OR userid_b
If the result is found let it return the name of the chat party which is John
, as his contact chat list, same goes to John
When he login the result will also show him Peter
not his own now 如果找到结果,则让它返回聊天方的姓名John
,作为他的联系人聊天列表,同样属于John
当他登录时,结果还将显示Peter
现在不是他自己的
I want my result be John login to his account the name of Peter will show as his chat partner. 我希望我的结果是John登录到他的帐户,Peter的名字将显示为他的聊天伙伴。
reg_userid | Name
--------------------------
1 | Peter
I want my result be Peter login to his account the name of John will show as his chat partner. 我希望我的结果是Peter登录到他的帐户,John的名字将显示为他的聊天伙伴。
reg_userid | Name
--------------------------
2 | John
I guess you are almost there. 我想你快到了。 This is probably what you are looking for: 这可能是您要寻找的:
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
I think this command can serve you 我认为这个命令可以为您服务
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.