У меня есть таблица mysql, содержащая сообщения:
id (INT)
sender_id (INT)
recipient_id (INT)
sent_time (INT)
read_time (INT)
body (TEXT)
Мне нужно получить список самых последних сообщений пользователя X, полученных или отправленных другим (отдельным) пользователям.
Другими словами, я хотел бы создать полный список разговоров с другими пользователями, отсортированный по времени send_time последнего сообщения, которым обменивался данный пользователь.
Конечный результат (обработанный в PHP) будет выглядеть примерно так:
array (
array (other_user_1_id, last_msg_sent_time, last_msg_is_read,
last_msg_is_to_me/from_me, number_of_messages*),
array (other_user_2_id, ... )
)
*) number_of_messages
необязательно, но довольно приятно иметь.
Вопрос: Как мне сделать это наиболее эффективно? Создать отдельную таблицу «разговоры» и обновлять ее каждый раз, когда кто-либо отправляет или читает сообщение, или создает отдельный, но сложный запрос к таблице «сообщений»? Если последнее, как будет выглядеть запрос?