如何在三个表中进行访问计数?

时间:2014-04-06 22:42:38

标签: sql ms-access oledb

我有三张桌子,为了简单起见,我们说 类别(1 ...很多)主题(1 ...很多)发布

我想要实现的是获取此类别中的CategoryID和主题总数以及帖子总数。

我所做的最好结果是使用以下查询:

SELECT category.ID, COUNT(topic.id) AS topiccount, COUNT(post.id) AS postcount
FROM ((category)
 LEFT JOIN topic  ON topic.categoryid = category.id)
 LEFT JOIN post ON post.topicid = topic.id
GROUP BY category.id

不幸的是,即使我在表中只有6个与我正在获得的类别相关的主题' 7'结果是。 我对它进行了一些研究,似乎我必须在COUNT中使用DISTINCT关键字,但是访问不支持它,我找不到在子查询中执行它的适当方法。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

你还有一个记录,因为你没有计算主题,你实际上是在计算主题 - 帖子连接记录。使用以下内容:

SELECT category.id, count(topic.id), Nz(Sum(numofposts),0)
FROM (category LEFT JOIN (
    SELECT topic.id, count(post.id) as numofposts, topic.categoryId
    FROM topic LEFT JOIN post on topic.id = post.topicId
    GROUP BY topic.id, topic.categoryId
) as TP ON category.id=TP.categoryid)
GROUP BY category.id

Nz用于确保在空主题中不会获得空总和