美好的一天,

我希望在最后发送日期(例如:1天前,3天前,8天前,等等)之前订购我的cometchat聊天室,以进行我正在集成的私人消息传递系统。

但是每次我运行命令:

(select distinct(f.member_id) id, f.display_name username from
cometchat m1, members f where (f.member_id = m1.from and m1.to = '1')
or (f.member_id = m1.to and m1.from = '1')) order by sent desc


这是从官方cometchat管理面板上获取的,我正确地显示了有问题的信息(但是它是无组织的。它是根据members表中的最后一个成员ID进行组织的。而不是cometchat的组织。)这是示例:http://i.imgur.com/ZfqAerr.png

现在,如果我使用以下命令:

(select distinct(f.member_id) id,sent, f.display_name username from
cometchat m1, members f where (f.member_id = m1.from and m1.to = '1')
or (f.member_id = m1.to and m1.from = '1')) order by sent desc


它确实输出来自cometchat的“已发送”时间,但同时也取消了所有已发送消息的分组(因此就像逐页而不是分组消息传递。)证明:http://i.imgur.com/dtJegw0.png

那么我必须采取什么步骤才能使其在上次发送时间之前以分组格式准确显示两个表?

这是Cometchat表的结构:i.imgur.com/s2Nf8xd.png

这是成员表的结构:i.imgur.com/mcq2Pyp.png

最佳答案

这是我们建议解决此问题的SQL:

select
  distinct(f.member_id) id,
  f.display_name username,
  max(sent) senttime
from cometchat m1, members f
where (f.member_id = m1.from and m1.to = '1')
   or (f.member_id = m1.to and m1.from = '1')
group by f.member_id
order by sent desc


group_by将来自特定成员或特定成员的邮件保持在一起。

关于php - Cometchat,按发送日期顺序排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36560905/

10-10 07:23