【发布时间】:2016-11-10 09:14:16
【问题描述】:
我已经在自定义论坛上工作了一段时间。我想显示论坛上最近的帖子。我在我的 Ubuntu 服务器上使用 PHP 7.0.8 和 MySQL 5.7.16。
收集论坛数据的表格有两个。 uap4_forum_posts 和 uap4_forum_post_replies
主题保存到 uap4_forum_posts。 主题回复保存到 uap4_forum_post_replies。
目标是获取所有新主题和所有主题回复(如果有)并按时间戳对其进行排序。按日期排序主题没有任何问题,但是当我添加主题回复时,它只使用第一个主题回复。因此,当有多个主题回复时,它不会显示最新的。
我的数据库设置如下: uap4_forum_posts uap4_forum_post_replies
这是我目前的 MySQL 查询:
SELECT sub.* FROM (
SELECT
fp.forum_post_id as forum_post_id, fp.forum_id as forum_id,
fp.forum_user_id as forum_user_id, fp.forum_title as forum_title,
fp.forum_edit_date as forum_edit_date,
fp.forum_timestamp as forum_timestamp, fpr.id as id,
fpr.fpr_post_id as fpr_post_id, fpr.fpr_id as fpr_id,
fpr.fpr_user_id as fpr_user_id, fpr.fpr_title as fpr_title,
fpr.fpr_edit_date as fpr_edit_date,
fpr.fpr_timestamp as fpr_timestamp,
GREATEST(fp.forum_timestamp, COALESCE(fpr.fpr_timestamp, '00-00-00 00:00:00')) AS tstamp
FROM uap4_forum_posts fp
LEFT JOIN uap4_forum_post_replies fpr
ON fp.forum_post_id = fpr.fpr_post_id
WHERE fp.allow = 'TRUE'
) sub
GROUP BY forum_post_id
ORDER BY tstamp DESC
2016-11-08 13:36:46 应该是上面数据的最新时间戳。
感谢您提供的任何帮助。这是我一直在从事的一个免费开源项目。
【问题讨论】: