我为我正在开发的CMS编写了一个简单的消息传递系统,并且很难找到获取最新消息(消息或回复)的所有消息及其回复的最佳方式。
我有一个名为“ messages ”的表,其中包含以下字段: * id,active [1,0],subject,message,datetime,user_from,user_to,reply_id *
这一切都很直接,主要级别消息的* reply_id *为空,并包含回复的父 id 。我不知道如何根据自己和他们的回复编写SQL以获取 datetime DESC 顺序中的所有主要级别消息。我确信它是用某种UNION完成的,但我的SQL技能缺乏。如果同一个SELECT可以给出每个主要级别消息中的回复计数,这将是惊人的!
任何帮助将不胜感激!
答案 0 :(得分:3)
已经很晚了,我很累,但我觉得你可以尝试这样的事情:
SELECT main.*, COUNT(reply.id) AS cnt_replies, MAX(reply.datetime) AS max_datetime
FROM posts AS main
LEFT JOIN posts AS reply
ON main.id = reply.reply_id
GROUP BY main.id
HAVING main.reply_id IS NULL
ORDER BY max_datetime DESC
编辑:修正查询
EDIT2:现在包含没有任何回复的邮件