每行的MYSQL COUNT(*)

时间:2011-10-27 13:30:40

标签: mysql count

我的数据库中有两个表。首先是category(categorytbl)

Category
ID | Category

第二个是items(itemstbl)

Items
id | ItemName | CategoryID | Date | Description

现在我需要从COUNT(*)中选择并计算categoryID所有项目,但我有问题,因为我可以将一个项目放在多个类别中

所以,当我列出所有类别时,我需要知道每个类别中有多少项目

类别 SUV(4项)

越野(43项)

例如

我有项目 CAR - >我可以开车进入SUV,奢侈品,越野......

thx for help

3 个答案:

答案 0 :(得分:1)

SELECT c.id, c.category, count(c.id) as cat_count
FROM items i
INNER JOIN category c ON (i.category_id = c.id)
GROUP BY c.id

答案 1 :(得分:0)

这是你在找什么?

 SELECT Category, count(*) from Category as c, Items as i
 WHERE c.ID = i.CategoryID
 GROUP BY Category
 ORDER BY count DESC

答案 2 :(得分:0)

解决评论时,听起来你需要重构数据模型,因为你想要项目和类别之间的多对多(M到N)关系,而你的数据不是1NF(因为它是逗号 - 隔开)。

这可以使用交集表(也称为联结表:here's a Wikipedia example)来完成。

计算每个项目(至少包含一个类别)的类别数量:

SELECT item_id, count(*) 
FROM junction_table
GROUP BY item_id

计算每个类别(至少有一个项目)的项目数量:

SELECT category_id, count(*) 
FROM junction_table
GROUP BY category_id

如果您还想包含没有类别/项目的项目/类别,您可以LEFT JOIN到相应的表格。