【发布时间】:2010-12-23 20:14:09
【问题描述】:
所以我有一个小论坛,我正在尝试获取数据,有 4 个表,forum、forum_posts、forum_threads 和 users。我想做的是获取每个论坛的最新帖子并让用户偷看该帖子,我还想获得每个论坛中的帖子数量和线程数量。另外,我想在一个查询中执行此操作。所以这就是我想出的:
SELECT lfx_forum_posts.*, lfx_forum.*, COUNT(lfx_forum_posts.pid) as posts_count,
lfx_users.username,
lfx_users.uid,
lfx_forum_threads.tid, lfx_forum_threads.parent_forum as t_parent,
lfx_forum_threads.text as t_text, COUNT(lfx_forum_threads.tid) as thread_count
FROM
lfx_forum
LEFT JOIN
(lfx_forum_threads
INNER JOIN
(lfx_forum_posts
INNER JOIN lfx_users
ON lfx_users.uid = lfx_forum_posts.author)
ON lfx_forum_threads.tid = lfx_forum_posts.parent_thread AND lfx_forum_posts.pid =
(SELECT MAX(lfx_forum_posts.pid)
FROM lfx_forum_posts
WHERE lfx_forum_posts.parent_forum = lfx_forum.fid
GROUP BY lfx_forum_posts.parent_forum)
)
ON lfx_forum.fid = lfx_forum_posts.parent_forum
GROUP BY lfx_forum.fid
ORDER BY lfx_forum.fid ASC
这得到每个论坛的最新帖子,让我先睹为快,问题是
lfx_forum_posts.pid =
(SELECT MAX(lfx_forum_posts.pid)
FROM lfx_forum_posts
WHERE lfx_forum_posts.parent_forum = lfx_forum.fid
GROUP BY lfx_forum_posts.parent_forum)
使我的 COUNT(lfx_forum_posts.pid) 变为一个(以及 COUNT(lfx_forum_threads.tid) 这不是我希望它工作的方式。我的问题是:有一些简单的方法可以让它显示正确的号码,同时获取正确的帖子信息(最新的)?
如果有什么不清楚的地方请告诉我,我会尝试进一步解释我的问题,这是我第一次在这里发帖。
【问题讨论】: