gpt4 book ai didi

php - 选择所有论坛并获得最新帖子......如何?

转载 作者:行者123 更新时间:2023-11-29 12:45:35 26 4
gpt4 key购买 nike

我正在尝试编写查询以选择我的所有论坛并获取相应的最新帖子(包括作者)...但我失败了。

这是我的结构:

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 中最新日期的帖子

最佳答案

DISTINCT ON 应该使这更容易:

SELECT DISTINCT ON (f.id)
f.id, f.name, f.description, f.icon, u.username
FROM forums f
LEFT JOIN forum_threads t ON t.forum_id = f.id
LEFT JOIN forum_posts p ON p.thread_id = t.id
LEFT JOIN users u ON u.id = p.user_id
WHERE f.parent_forum = 1
ORDER BY f_id, p.updated_at DESC;

根据您的 Q 更新,最新的帖子是具有最新 forum_posts.updated_at 的帖子。
假设列定义为 NOT NULL

详细解释:
Select first row in each GROUP BY group?

关于php - 选择所有论坛并获得最新帖子......如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24615884/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com