我创建了一个消息系统,用户可以相互发送消息。它像Facebook一样基于线程。因此,每个用户只能与另一个用户在一个特定的消息线程中。
所有消息的主要概述并非如我所愿。它仅显示最早的(第一个)消息文本和线程的日期,并且不按发送的最新消息排序。
MySQL数据库结构:
messages_assign
:id
,uid
,thread_id
,status
,date
messages_content
:id
,uid
,thread_id
,text
,date
messages_thread
:id
,creator_uid
,receiver_uid
我认为这是不言自明的,但澄清一下:messages_assign
将内容分配给特定的消息线索。我想扩展这个消息系统,以便能够在某一天向多个用户发送消息,这就是我想出这个结构的原因。
这是我在PHP中的MySQL查询:
$menu = mysql_query("SELECT
t.`id`, t.`creator_uid`,
c.`uid` AS content_uid, c.`text`, c.`date` AS content_date,
a.`status`, a.`date` AS assign_date,
CASE
WHEN t.`creator_uid`='".sInput($_SESSION['uid'])."' THEN `receiver_uid`
WHEN t.`receiver_uid`='".sInput($_SESSION['uid'])."' THEN `creator_uid`
END AS uid
FROM `messages_content` c
LEFT JOIN `messages_thread` t ON t.`id` = c.`thread_id`
LEFT JOIN `messages_assign` a ON a.`id` = t.`id`
WHERE
t.`creator_uid`='".sInput($_SESSION['uid'])."'
OR
t.`receiver_uid`='".sInput($_SESSION['uid'])."'
GROUP BY t.`id`
ORDER BY c.`id` DESC") or die (mysql_error());
我想在某个地方必须有一个子查询,让它按最新的日期和文字排序,但我对此并不熟悉,也不知道在哪里放以及如何?
所以基本上我只是希望消息线程按收到的最新消息排序,显示特定线程的最新文本和日期。