根据用户用户名分组聊天

ve7v8dk2  于 2021-06-19  发布在  Mysql
关注(0)|答案(2)|浏览(355)

我正在为我的网站创建一个聊天系统,但是我遇到了一个小问题,我想将当前用户与之交谈的其他用户用户名上的消息分组,假设我有4个用户和3个对话。在会话1中,user1(john)与user2(smith)交谈;在会话2中,user2(smith)与user3(michael)交谈;在会话3中,user1(john)与user3(michael)交谈。因此,当user1在收件箱中登录到其帐户时,将显示两个与username smith的对话,另一个与username michael的对话,依此类推。。这是我的table。。
1.用户:
身份证件
用户名
密码
2.对话:
会话\u id
来自用户
发送给用户
3.信息:
消息\u id
会话\u id
用户id
消息\u文本
消息\u日期
看到
它必须像facebook messanger。。。任何帮助都将不胜感激谢谢

0vvn1miw

0vvn1miw1#

往那边找

SELECT conversation_id, from_user AS userid FROM conversations WHERE to_user   = 'the_loggued_user'
UNION
SELECT conversation_id, to_user   AS userid FROM conversations WHERE from_user = 'the_loggued_user'

正在加入用户表:

SELECT C.conversation_id, C.userid, U.username
FROM(
    SELECT conversation_id, from_user AS userid FROM conversations WHERE to_user   = 'the_loggued_user'
    UNION
    SELECT conversation_id, to_user   AS userid FROM conversations WHERE from_user = 'the_loggued_user'
    ) C
INNER JOIN Users U ON U.id=C.userid
7lrncoxx

7lrncoxx2#

我真的不知道这是不是你的困境,但我会尽力帮助你。
首先,当有人发送消息时,您需要签入会话表如果已经有会话,如果没有,您将创建一个会话,但您需要添加一个新列,其中存储上次发送或接收的消息的日期,并将其命名为last\u message,当有人发送消息时,您将更新该列中的日期和时间,然后您将将用户发送的消息插入到消息表中。
现在,当用户打开他的收件箱时,您只需要一个查询,就可以在from\u user或to\u user列中选择与他的用户名相匹配的对话,这些列按存储在last\u message列中的日期和时间排序。

相关问题