В настоящее время у меня есть следующие таблицы для личного форума сообщений:
альтернативный текст http://img159.imageshack.us/img159/45/pmdata.jpg
альтернативный текст http://img504.yfrog.com/img504/3968/pminfo.jpg
То, что я пытаюсь сделать, это вывести «входящие», которые отображают самую новую ветку вверху и группировать за ниткой (то есть вы не видите одну и ту же ветку дважды в вашей папке входящих), независимо от того, отправитель.
То, что у меня сейчас есть, прекрасно работает для простых сообщений между двумя пользователями. Тем не менее, когда третий пользователь отвечает в той же теме, он не отображается правильно. Мой текущий запрос такой:
SELECT pm_info.is_read, sender.usrFirst as sender_name, pm_data.date_sent, pm_data.title, pm_data.thread_id, pm_data.id as dataid, thread_max_date_sent
FROM pm_info
INNER JOIN pm_data ON pm_info.message_id = pm_data.id
INNER JOIN tblUsers AS sender ON pm_data.sender_id = sender.usrID
INNER JOIN (SELECT thread_id, sender_id, MAX(date_sent) AS thread_max_date_sent FROM pm_data GROUP BY thread_id, sender_id) deriv1 ON pm_data.thread_id = deriv1.thread_id AND pm_data.date_sent = deriv1.thread_max_date_sent AND pm_data.sender_id = deriv1.sender_id
WHERE pm_info.receiver_id = '$usrID'
ORDER BY deriv1.thread_max_date_sent DESC
Предполагая, что $ usrID = 68 (следовательно, receive_id = 68), он выводит это:
From: Kyle (pm_data.id = 18) RE: single message (thread_id= 13587)
From: Ed (pm_data.id = 12) RE: single message (thread_id= 13587)
From: Ed (pm_data.id = 8) RE: Test Number 2 (thread_id= 16256)
Обратите внимание, как thread_id (13587) отображается дважды, потому что есть 2 разных отправителя.
Как я мог это сделать просто отображать самый последний thread_id, независимо от того, кто является отправителем?
Большое спасибо !!