【发布时间】:2010-11-18 20:02:59
【问题描述】:
我正在尝试为我的论坛索引获取数据。获取所有版块的列表、该版块中的主题数以及该版块中每个主题的帖子数。
SELECT
board.*,
IFNULL(a.thread_count, 0) AS thread_count,
b.post_count
FROM
(SELECT * FROM r_forum_boards ORDER BY position) board
LEFT OUTER JOIN
(SELECT r_forum_threads.board, r_forum_threads.id,
COUNT(r_forum_threads.id) AS thread_count
FROM r_forum_threads) a
ON board.id = a.board
LEFT OUTER JOIN
(SELECT r_forum_posts.thread_id, COUNT(*) AS post_count
FROM r_forum_posts) b
ON b.thread_id = a.id
问题是 post_count 返回NULL。我已经尝试了几种不同的变体,但都没有奏效。
【问题讨论】:
-
如果你分别运行每个子查询,它们都会给出结果吗?
-
如果我删除最后一个 JOIN,它会返回正确的结果和正确的线程数。如果我查询最后一个 JOIN 它会返回每个线程 ID 的正确帖子计数。我想我需要找到一种方法来对每块板的所有这些结果求和