sql,每个广告系列祖先的儿童数量

时间:2016-07-08 11:50:13

标签: mysql sql ruby-on-rails ancestry

如何计算像树结构

这样的祖先中每个名字的子句数
ID | NAME                    | PATH
100 | Electronics & Computers | /100
101 | Games                   | /100/101
102 | Xbox360                 | /100/101/102
103 | PS4                     | /100/101/103

所以我应该有像

这样的东西
100 | 3
101 | 2
102 | 0
103 | 0

非常感谢你的帮助

2 个答案:

答案 0 :(得分:0)

以下是一种使用自连接和聚合的方法:

select t.id, count(t2.id)
from t left join
     t t2
     on t2.path like concat(t.path, '/%')
group by t.id;

答案 1 :(得分:0)

SELECT A.id,
        (SELECT count(B.id) FROM `tablename` B where path like CONCAT('%/', A.id, '%' ) and B.id != A.id) count
    FROM `tablename` A

试试这个。 http://sqlfiddle.com/#!9/51b7b/1