2010-02-26 3 views
0

Я пытаюсь настроить свою команду с помощью команды по команде, в основном я пытаюсь выбрать все сообщения пользователя, группировать их по темам, а затем показывать их - точно так же, как выглядит книга лица Это.facebook message result set like

Результат должен содержать последний идентификатор сообщения, идентификатор отправителя, дату и общее количество сообщений в этом предмете.

Таблица сообщение может выглядеть следующим образом:

 
message 
------- 
id 
sender_id 
subject 
created_at 

Таким образом, результат должен показывать сообщения всех пользовательских сгруппированных по той же теме.

+1

Для примера набора данных в таблице сообщений для небольшого количества пользователей и сообщений, пожалуйста, вы можете предоставить пример набора результатов, который вы хотели бы вернуть? На данный момент я не понимаю, как они должны быть сгруппированы вместе в ваш идеальный выход. –

ответ

1
SELECT sender_ID, subject, MAX(id), MAX(created_at), COUNT (id) 
FROM message 
WHERE recipient_id = current_user_id OR sender_id = current_user_id 
GROUP BY subject, sender_ID, receipient_id 
ORDER BY MAX(created_at) DESC 

С GROUP BY, все, что не в GROUP BY предложения должно быть в агрегатной функции (например, COUNT, SUM, MAX, и т.д.) в ЗЕЬЕСТЕ.

EDIT - реализована группа Наверху не совсем делается то, что, как я думаю, вы хотите (например, примерный набор результатов поможет), поэтому можно подумать об упрощении этого. Во время создания сообщения вы можете установить дополнительное значение столбца - chat_id. Это будет присвоено новому значению при создании нового сообщения и повторном использовании для любых ответов. Затем вы можете Группировать по цепочке_диалогов для группировки сообщений вместе так, как мне кажется, они должны быть

+0

Возможно, вы захотите «заказать по теме sender_ID» – TheSteve0

+0

good point, updated –

+0

ребята, сортировка по идентификатору отправителя не будет отображать сообщения от самых последних до самых старых. ..? его нужно сортировать по created_at, чтобы он отображал сообщения по дате заказа нет? – David