簡體   English   中英

MySQL從其他表中選擇昵稱?

[英]Mysql select nickNames from other table?

我有3張桌子用於聊天應用

  • chatRooms(id)

  • chatMessages(id,roomId,userId,消息)

  • userData(用戶ID,昵稱)

如何加載帶有nickNames的chatMessages的所有chatRoom?

我試過了:

$qry = $db->prepare('SELECT 
        chatRooms.id,
        chatMessages.message, 
        userData.nickName 
    FROM chatRooms 
    LEFT JOIN chatMessages 
        ON chatMessages.roomId = chatRooms.id 
    LEFT JOIN userData 
        ON chatMessages.userId = userData.userId '
);
$qry->execute();

但這似乎對我不起作用:C

我想以聊天名稱顯示在chatRoom中的所有用戶

因此,如果小組中有3個人(弗雷德,喬,貝恩),那么我莫名其妙地需要一個陣列。 對於每個數組元素(chatRoom)

您的第一個LEFT JOIN很可能返回多個行。

根據您的問題,您的“ chatMessages”表中也包含一個userId。 您還應該對此進行過濾。

為此,您需要:

  1. 在chatMessages之前加入userData
  2. 將userData中的userId包括在chatMessages的LEFT JOIN中

     $qry = $db->prepare('SELECT chatRooms.id, chatMessages.message, userData.nickName FROM chatRooms LEFT JOIN userData ON chatMessages.userId = userData.userId LEFT JOIN chatMessages ON chatMessages.roomId = chatRooms.id AND chatMessages.userId = userData.userId'); $qry->execute(); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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