我正在试图弄清楚如何使用计数功能来计算每个类别中有多少个子类别。
我的原始查询如下(其中name =类别名称):
select
catid,
name,
pcatid
from category
我只想添加一个名为'SubCategoryCount'的列(我的数据库中没有包含在任何地方)。如果有意义,此列将计算每个catid被引用到pcatid列的次数。
一个简单的例子DB就是
catid name pcatid
1 Base NULL
2 Computers 1
3 Phones 1
4 Laptops 2
5 Dell 4
我想制作
catid name pcatid SubCategoryCount
1 Base NULL 2
2 Computers 1 1
3 Phones 1 0
4 Laptops 2 1
5 Dell 4 0
但我怎么会这样呢?
感谢您的帮助
约翰
答案 0 :(得分:1)
您需要使用LEFT JOIN
加入表本身,这样即使它没有子类别,它也会显示表中的所有记录。
SELECT a.catid,
a.NAME,
a.pcatid,
COUNT(b.pcatid) SubCategoryCount
FROM category a
LEFT JOIN category b
ON a.catid = b.pcatid
GROUP BY a.catid, a.NAME, a.pcatid
PS:此查询只是结果的投影,而不更改表的原始架构。它不会在表category
上物理添加新列。