1

我试图弄清楚如何使用 count 函数来计算我的每个类别有多少子类别。

我的原始查询如下(其中名称 = 类别名称):

select 
catid,
name,
pcatid
from category

我只是想添加一个名为“SubCategoryCount”的列(它不包含在我的任何地方的数据库中)。如果有意义的话,该列将计算每个 catid 在 pcatid 列中被引用的次数。

一个简单的示例数据库是

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

但我将如何实现这一目标?

谢谢你的帮助

约翰

4

1 回答 1

2

您需要使用连接表本身,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:这个查询只是结果的投影,没有改变表的原始模式。它不会在 table 上物理添加新列category

于 2013-09-25T13:35:39.917 回答