2011-10-01 16 views
0

兒童比方說,我有3列的表格:計數根在SQL

  1. 項目ID 'ID'
  2. 父ID 'PARENTID'
  3. 項目名稱 '標題'

現在,我應該如何計算Root有多少個孩子?

+0

感謝墊子校正:) –

+0

如果要算的後裔,這是你的答案 http://stackoverflow.com/questions/2340696/counting-number-of-children-in-hierarchical -sql-data – evpo

+0

你可以看到這個答案:http://stackoverflow.com/questions/959804/simulation-of-connect-by-prior-of-oracle-in-sql-server/959821#959821 – Benoit

回答

3
SELECT COUNT(*) 
FROM T 
WHERE ParentID = @ParentID 

如果你想子孫不只是直系子,你需要一個遞歸CTE。

;WITH R AS 
(
SELECT ID 
FROM T 
WHERE ParentID = @RootID 
UNION ALL 
SELECT T.ID 
FROM T 
JOIN R ON R.ID = T.ParentID 
) 
SELECT COUNT(*) 
FROM R 
+0

是的馬丁,這正是我要找的。我需要計算所有的孩子的孩子.. –

+0

從PostgreSQL 9.5.1開始,你需要在WITH後編寫RECURSIVE。 – Rodrigo

+0

@Rodrigo這是一個SQL Server問題(根據標籤) –