2010-02-03 110 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