我的数据库中有两个表。首先是category
(categorytbl)
Category
ID | Category
第二个是items
(itemstbl)
Items
id | ItemName | CategoryID | Date | Description
现在我需要从COUNT(*)
中选择并计算categoryID
所有项目,但我有问题,因为我可以将一个项目放在多个类别中
所以,当我列出所有类别时,我需要知道每个类别中有多少项目
类别 SUV(4项)
越野(43项)
例如
我有项目 CAR - >我可以开车进入SUV,奢侈品,越野......
thx for help
答案 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
到相应的表格。