开发者社区> 问答> 正文

PHP关于太阳线直线会员分支下线所有人数统计:报错

以上是结构图,现有数据库只有两个字段,如:uid和tid,假设我目前的uid是100001,我发展了三个会员,但是我的其中一个会员100005他 发展了三个,但不一定是三个,目前想要统计出我是100001下面有多少,包括树下所有人,统计100021下面有多少人,还有怎么把这个树表达出来,由 于个人能有限,请各位大神给予帮助,写出相应的算法!还有就是输入一个ID可以把我下面的所有人员都列出来,这个怎么实现,数据库当时设计只有这两个字段。更改是不是有困难!

展开
收起
kun坤 2020-06-06 11:33:33 504 0
1 条回答
写回答
取消 提交回答
  • http://blog.csdn.net/MONKEY_D_MENG/article/details/6647488


    基于左右值编码的Schema设计

    ######你给的这篇文章简直是 非常好!!! 我强烈推荐楼主参考这个!######

    不改结构只能递归了.

    ######求写法!######


    如果不考虑性能的话,可以使用一个 递归 去获取所有。当然,每次执行起来就会变得非常慢了。

    在现有表中添加一个 child 的字段,用于记录 子层的发展。每一个子层进行更改,程序都对上层的父进行记录和修改。

    这样要用到的时候,直接填写ID,查对应的 记录就行了。

    -----

    另外一个方法就是 对遍历过的 整个 进行 缓存处理,打包成成品。 只要涉及到修改,就更新缓存。这是在不改表结构,用算法去实现。


    ######

    估计写存储过程可以,不过我不会写

    如果要调整表的结构,可以参考我的博文(只有思路,没有实现):

    http://my.oschina.net/u/1382972/blog/225211 

    ######

    http://segmentfault.com/q/1010000000126370

    ######

    见https://my.oschina.net/drinkjava2/blog/828781
    只需要利用行号(已排序)和深度两个额外字段(加上尾部的结束标记),即可以高效地实现SQL子树、父子节点的查询/删除/插入操作,缺点是节点的移动操作不太方便,适用于只增减,不常移动节点的场合。

    2020-06-06 11:33:40
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
PHP安全开发:从白帽角度做安全 立即下载
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载
复杂PHP系统性能瓶颈排查及优化 立即下载