SQL Count子类别

时间:2013-09-25 13:32:31

标签: mysql sql

我正在试图弄清楚如何使用计数功能来计算每个类别中有多少个子类别。

我的原始查询如下(其中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

但我怎么会这样呢?

感谢您的帮助

约翰

1 个答案:

答案 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上物理添加新列。