0

我正在尝试制作一个搜索过滤器,显示带有项目计数的类别。我有一个类别/职位关系表如下

entry_id | cat_id
------------------
    1    |   1
------------------
    1    |   3
------------------
    2    |   1
------------------
    3    |   2
------------------
    3    |   3
------------------

我想要做的是显示每个类别的帖子总数。我已经设法实现了一个绝对解决方案,其中一个明确的总输出显示如下:

SELECT count(entry_id) as count FROM cat_rel_table WHERE cat_id = $i;

我想要实现的是一个更相对的计数,它计算有多少项目被归类在所有“活动”类别中。所以我想指定多个 cat_id。它将计算有多少项目被归类在这些类别下。类似这样的东西:

SELECT count(entry_id) as count FROM cat_rel_table WHERE cat_id IN(1, 3);

但前提是一个类别有一个项目也属于另一个活动类别。

4

2 回答 2

2

使用 GROUP BY。

SELECT count(entry_id) as count, cat_id 
FROM cat_rel_table 
WHERE cat_id IN(1, 3) 
GROUP BY cat_id

然后您可以修改该IN()子句以过滤“活动”类别。

于 2013-07-09T16:17:27.443 回答
0

我相信您正在寻找“分组依据”条款。

http://www.w3schools.com/sql/sql_groupby.asp

于 2013-07-09T16:18:20.350 回答