【问题标题】:Get all conversations from one user in different chats在不同的聊天中获取一位用户的所有对话
【发布时间】:2017-12-28 20:47:30
【问题描述】:

我的问题是this 帖子的延续。

在那里,您可能已经注意到标记为已回答的查询并没有真正输出消息正文本身。

就我而言,我需要的是输出一个 WhatsApp 风格的“聊天”视图。

这个查询几乎解决了它:

SELECT T1.user2_id, users.userName, users.ava, max(cdate) maxDate FROM
            (SELECT user_to user2_id, max(msg_time) cdate
                FROM chat WHERE user_from=:id
                GROUP BY user_to
            union distinct
            (SELECT user_from user2_id, max(msg_time) cdate
                FROM chat WHERE user_to = :id
                GROUP BY user_from)) T1
            inner join users on (users.userID = T1.user2_id)
            group by T1.user2_id
            order by maxDate desc

但剩下的未解决的事情是:如果我只是将 msg('msg' 包含实际消息,并且是表 'chat' 中的一列)添加到每个 SELECT 中,则查询会选择错误消息。虽然我理解为什么会发生这种情况,但我无法真正让它发挥应有的作用。感谢您的建议!

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    只是将它包装在另一个 SELECT + JOIN 中。

    查询的确切作用:获取给定用户的所有聊天记录,获取每个聊天记录的最新消息(无论是登录用户发送的消息,还是登录用户从另一个用户接收的消息(结果不会加倍) place)),按日期降序对所有聊天进行排序,即最近的在顶部。

    $sql="
    SELECT T2.maxDate, T2.user2_id, T2.ava, T2.userName,chat.user_to, chat.user_from,chat.body,chat.viewed FROM 
    (SELECT T1.user2_id, users.userName, users.ava, max(cdate) maxDate FROM
                    (SELECT chat.user_to user2_id, max(msg_time) cdate
                        FROM chat WHERE chat.user_from=18
                        GROUP BY chat.user_to
                    union distinct
                    (SELECT chat.user_from user2_id, max(msg_time) cdate
                        FROM chat WHERE chat.user_to=18
                        GROUP BY chat.user_from)) T1
                    inner join users on (users.userID = T1.user2_id)
                    group by T1.user2_id
                    order by maxDate desc) T2
                    join chat on (T2.maxDate = chat.msg_time) ORDER BY T2.maxDate DESC";
    

    【讨论】:

      猜你喜欢
      • 2015-02-16
      • 2021-06-05
      • 1970-01-01
      • 2012-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-27
      • 2019-08-21
      相关资源
      最近更新 更多