2013-09-25 79 views
0

我想弄清楚如何使用計數函數來計算每個類別有多少個子類別。SQL計數子類別

我原來的查詢如下(其中name =類別名稱):

select 
catid, 
name, 
pcatid 
from category 

我只是想增加一列(其中不包括在任何地方我DB)被稱爲「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

你需要使用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上添加新列。