簡體   English   中英

SQL查詢從內部聯接返回多個數據

[英]SQL Query to return multiple data from inner join

我有兩個數據庫表,一個是注冊用戶表,另一個是聊天消息表。 我想在聊天消息表中列出進行了轉換的用戶。 下面的sql查詢可以執行此操作,但是它在列表中顯示的是活動用戶名,而不是聚會用戶。

##表users_account

reg_userid | Name
--------------------------
1          | Peter   
2          | John   

表chatroom_message

userid_a | userid_b
--------------------------
1          | 2   
3          | 1

的SQL

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM