2010-02-03 125 views
2

我想(使用CTE)以這種方式計算表兒童必須在母公司層面數量,包括他們的孩子所有兒童的。有沒有樣品可用?SQL CTE計數孩子的遞歸

回答

1
CREATE TABLE t_parent (id INT NOT NULL PRIMARY KEY, parentID INT NOT NULL) 

INSERT 
INTO t_parent 
VALUES (1, 0) 
INSERT 
INTO t_parent 
VALUES (2, 1) 
INSERT 
INTO t_parent 
VALUES (3, 1) 
INSERT 
INTO t_parent 
VALUES (4, 2) 
INSERT 
INTO t_parent 
VALUES (5, 1) 
INSERT 
INTO t_parent 
VALUES (6, 5) 
INSERT 
INTO t_parent 
VALUES (7, 5); 

WITH q AS 
     (
     SELECT id, parentId 
     FROM t_parent 
     UNION ALL 
     SELECT p.id, p.parentID 
     FROM q 
     JOIN t_parent p 
     ON  p.id = q.parentID 
     ) 
SELECT id, COUNT(*) 
FROM q 
GROUP BY 
     id 
+0

@KM:使用向下滾動:) – Quassnoi 2010-02-03 12:56:24

+0

咄!!!!!!!!!!!!!!! – 2010-02-03 13:21:55

+0

謝謝你,你的解決方案工作,所以我給它我的投票。 – kannankeril 2015-09-07 04:50:47