[英]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.