По идее, просто сортировка по времени - это не совсем диалог (я, по крайней мере, вижу это немного иначе).
Чтобы было более-менее похожее на настоящие даилоги, надо выводить именно ветки связанных сообщений.
За один день может быть несколько отдельных диалогов. Выводим первое сообщение диалога, разворачиваем весь в случае необходимости.
Реализовать можно так - ты пишешь мне, я тебе отвечаю, ты мне - я тебе и так далее. То есть считать за диалог именно цепочку сообщений, когда один отвечает другому. Если один написал, другой ему ответил, пишем в базу, что сообщение, на которое ответили - первое сообщение ветки диалога, сохраняем id ветки диалога, который будет писаться и в другие сообщения, которые будут идти при ответе на последующие сообщения ветки.
Эм.. кто-нибудь вообще понял, о чем? Как-то я кажется мутно описываю..
Пример :
Вася пишет Сереже - привет, как дела?
Сережа отвечает Васе - Дарова, нормально! // в этом момент создаем в таблице диалогов новую запись (ведь Сережа ответил Васе, и это можно считать началом диалога). ID вставляем в свойства первого и второго сообщения.
Вася отвечает Сереже - Че, живой после вчерашнего? // смотрим, есть ли у предыдущего сообщения ID диалога и если есть, пишем в свойства текущего сообщения. И так далее, по аналогии.
Насчет оптимизации и структуры таблиц надо, конечно, думать. Я просто план примерный накидал.
Автор, тебе что-то типа этого надо или просто упорядочивание сообщений по такому параметру, как кто кому написал?
Изменил: Алексей (14.03.2012 / 00:25)