gpt4 book ai didi

php - Mysql从其他表中选择昵称?

转载 作者:行者123 更新时间:2023-11-29 17:52:19 25 4
gpt4 key购买 nike

我有 3 个用于聊天应用程序的 table

  • 聊天室(id)

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

  • userData(用户 ID、昵称)

如何加载所有包含带有昵称的聊天消息的聊天室?

我尝试过:

$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

我想在聊天名称中显示聊天室中的所有用户

因此,如果组中有 3 个人(Fred、Joe、Bane),那么我不知怎的就需要一个包含他们的数组。对于每个数组元素(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();

关于php - Mysql从其他表中选择昵称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49204601/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com