Cometchat,按发送日期排序desc

时间:2016-04-11 23:15:42

标签: php mysql cometchat

美好的一天,

我希望按照上次发送日期订购我的聊天聊天(例如:1天前,3天前,8天前等等),我正在努力整合私人消息系统。

但是每次我运行命令时:

(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管理面板中获取的,我正确地显示了有问题的信息(但是它没有组织。它通过成员表中的最后一个成员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

1 个答案:

答案 0 :(得分:0)

以下是我们建议解决此问题的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将来自特定成员的消息保存在一起。