Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 用于在一个表中显示和排序消息及其回复的SQL_Php_Mysql_Sorting_Messaging - Fatal编程技术网

Php 用于在一个表中显示和排序消息及其回复的SQL

Php 用于在一个表中显示和排序消息及其回复的SQL,php,mysql,sorting,messaging,Php,Mysql,Sorting,Messaging,我已经为我正在开发的CMS编写了一个简单的消息传递系统,我很难找到最好的方法来获取最新的消息及其回复(消息或回复) 我有一个名为“messages”的表,其中包含以下字段: *id,活动[1,0],主题,消息,日期时间,用户自,用户至,回复id* 这完全是直截了当的,对于主要级别的消息,*reply_id*为空,并且包含回复的父id。我不知道如何编写SQL来根据它们自己和它们的回复以datetime DESC顺序获取所有主要级别的消息。我相信这是通过某种形式的联合完成的,但我的SQL技能还不够。

我已经为我正在开发的CMS编写了一个简单的消息传递系统,我很难找到最好的方法来获取最新的消息及其回复(消息或回复)

我有一个名为“messages”的表,其中包含以下字段: *id,活动[1,0],主题,消息,日期时间,用户自,用户至,回复id*

这完全是直截了当的,对于主要级别的消息,*reply_id*为空,并且包含回复的父id。我不知道如何编写SQL来根据它们自己和它们的回复以datetime DESC顺序获取所有主要级别的消息。我相信这是通过某种形式的联合完成的,但我的SQL技能还不够。如果同样的选择可以给出每个主要级别消息中的回复数量,那将是惊人的


任何帮助都将不胜感激

时间很晚了,我很累,但我想你可以试试这样的东西:

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:现在包括没有任何回复的邮件

时间很晚了,我很累,但我想你可以试试这样的方式:

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:现在包含没有任何回复的邮件

非常感谢您,这看起来非常完美。。。但有一个问题:main.id指的是什么?我得到了这个错误:
where子句中的未知列'main.id'
@cbh抱歉,我相应地编辑了我的答案。如果效果更好,请告诉我。干杯@非常感谢你,这正是我所需要的@实际上,此查询不包括没有回复的邮件。。。hmm@cbh你说得对!查看我的答案,我刚刚编辑了查询。将
替换为NULL
替换为
=0
,具体取决于您使用的内容。非常感谢您,这看起来非常完美。。。但有一个问题:main.id指的是什么?我得到了这个错误:
where子句中的未知列'main.id'
@cbh抱歉,我相应地编辑了我的答案。如果效果更好,请告诉我。干杯@非常感谢你,这正是我所需要的@实际上,此查询不包括没有回复的邮件。。。hmm@cbh你说得对!查看我的答案,我刚刚编辑了查询。替换
为空
=0
,具体取决于您使用的内容。