【发布时间】:2013-11-14 20:23:48
【问题描述】:
我正在整理一个包含主题/帖子的简单论坛脚本。我正在尝试通过最新帖子订购主题,并且我对以下问题的答案很幸运:MYSQL Order from another Table,但我遇到的问题是某些主题还没有任何帖子,所以查询没有'根本不选择那些主题。
当前编码为:
SELECT DISTINCT forum.*
FROM forum
INNER JOIN forum_posts
ON forum.id = forum_posts.parent_id
GROUP BY forum.id
ORDER BY forum_posts.parent_id DESC,
forum_posts.time_created DESC
LIMIT ?,?
如果 forum_posts.parent_id 中没有某个主题的匹配项,我想告诉 ORDER BY 按 forum.time_created 排序。
顺便说一句,我也想知道如何将 WHERE 子句放入此查询中。我只想从论坛表“WHERE access where 将 sn-p 放入。
非常感谢任何帮助!
编辑:
目标是返回主题(来自论坛表) 根据以下细节:
- 在哪里 forum.access
- 限制?,?
- 订购 来自 forum_posts 表的最新帖子,其中 forum_posts.parent_id 与 forum.id 匹配, 或 forum.time_created
编辑 2:
一个包含相关数据的示例 SQLfiddle。这不起作用,因为订单应该真的是 11,10,9,1,2 http://sqlfiddle.com/#!2/83535/2
【问题讨论】:
-
您需要将 OUTER JOIN,即 LEFT [OUTER] JOIN 与 GROUPWISE MAX 查询结合起来(手册中记录的不相关子查询示例通常最快)。
-
感谢您的提示,对改进我的查询代码有帮助吗?