Добрый день,
Я хочу заказать комет-чаты по дате последней отправки (например, 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
Который взят из официальной админ-панели кометча, я правильно отображаю интересующую информацию (однако она неорганизована. Она организуется по последнему идентификатору участника из таблицы членов. Вместо этого из кометы.) Это пример: 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
Он выводит «отправленные» времена из кометча, но также разгруппирует все отправленные сообщения (так что это как страница за страницей, а не групповые сообщения). Доказательство: 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
хранит сообщения, отправленные от или к определенному участнику вместе.
Других решений пока нет …