【发布时间】:2014-07-07 16:59:22
【问题描述】:
我正在尝试编写查询以选择我所有的论坛并获取相应的最新帖子(包括作者)...但我失败了。
这是我的结构:
forums forum_threads forum_posts
---------- ------------- -----------
id id id
parent_forum (NULLABLE) forum_id content
name user_id thread_id
description title user_id
icon views updated_at
created_at created_at
updated_at
last_post_id (NULLABLE)
这是我当前的查询:
SELECT forum.id, forum.name, forum.description, forum.icon, post_user.username
FROM forums AS "forum"
LEFT JOIN forum_posts AS "post" ON post.thread_id = (
SELECT id
FROM forum_threads
WHERE forum_id = forum.id
ORDER BY updated_at DESC LIMIT 1)
LEFT JOIN users AS "post_user" ON post_user.id = post.user_id
WHERE forum.parent_forum = 1
GROUP BY forum.id
这个查询当然是不正确的,因为一个帖子里有很多帖子……
有人可以帮忙吗?顺便说一句,我正在使用 PostgreSQL。
哦:我忘了: 目前,我浏览了所有“类别”(具有 parent_forum = NULL 的论坛),然后为每个论坛运行了一个附加查询(这就是您在我的查询中看到 parent_forum = 1 的原因)。有没有更好的方法来做到这一点?
编辑: 我的最后一篇文章是 forum_posts
中 updated_at 中最新日期的帖子【问题讨论】:
-
我不太明白你关于
"categories"的第二个问题。我建议为此打开一个 new 问题。每个问题的一个问题是它应该如何。您总是可以参考这个上下文来保护一些多余的输入。 -
我的意思是每个论坛都有一个“parent_forum”。如果 "parent_forum" 为 NULL,那么它是一个有子论坛的类别。
标签: php sql postgresql greatest-n-per-group forum