您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> MYSQL >> php+mysql 如果进行递归统计

php+mysql 如果进行递归统计

来源:网络整理     时间:2016/5/28 18:19:06     关键词:Mysql

关于网友提出的“php+mysql 如果进行递归统计”问题疑问,本网通过在网上对“php+mysql 如果进行递归统计”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题:php+mysql 如果进行递归统计
描述:

现在有张表结构大概是这样

id      name    parent_id    score

1       aaa       0                10

2       bbb        1                15

3       ccc         2                20

4       ddd        1                5

5       eee         0               50

首先是统计 计算出不同name 的 socre值.计算规则是这样

比如 bbb 的 parent_id 为  1 ,那么 id 为1 的记录的 score值就需要 加上 bbb 的 score值

同理 ccc的 parent_id 为 2,那么 bbb的 score值实际上为 15+20=35

aaa的 score值就为  10+35+5=50

bbb 为 35

ccc 为20

ddd 为5 

eee 为50

最后得到结果为

name     socre

aaa        50

eee        50 

bbb        35

ccc         20

ddd        5

如何根据上表的内容得到下面这个表的内容..

纯sql 好像搞不定...或者有没有效率高点的php代码实现也可以 


解决方案1:

以前好像看到过一个SQL,这是我的博客。http://www.sifangke.com/2012/05/mysql-child-from-parent/

希望你从这条SQL语句中受到启发。

解决方案2:

先 查出所有的 最终子节点.. 也就是 id  不出现在 parent_id 内的记录

select * from table where id not in (select parent_id from table)

然后一级一级的查上去

解决方案3:

mysql 的递归查询, 还不会.

解决方案4:

这里面有个 递归嵌套..

ccc 的 pid 为2  即 bbb  那么,计算bbb 的 score值 就为 bbb的score+ccc的score值

而 bbb的 pid 为1  即 aaa  那么计算aaa 的score值 就为bbb的 socre值+aaa的score值

但注意:这里 bbb 的score值 来源于前面计算得出的score值,并不是表中存储的字段的值

解决方案5:

你的描述很让人郁闷,  你想要的结果是不是 统计 pid 对应 的 name 值以及 score 总值.

如果是这样的话, 可以用一条 sql 获取.

select A.name , A.score+sum(B.score) from T A,T B where B.parent_id = A.id Group by A.id


以上介绍了“php+mysql 如果进行递归统计”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/1368982.html

相关图片

相关文章