首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何对单层mlm树进行团队合计

如何对单层mlm树进行团队合计
EN

Stack Overflow用户
提问于 2020-10-15 20:30:55
回答 1查看 72关注 0票数 1

我需要找到单层传销树的团队总数,我有用户表,就像这样

代码语言:javascript
复制
+-------+-------+-----------+
| id    | fname | parent_id |
+=======+=======+===========+
| sk001 | aa    | null      |
+-------+-------+-----------+
| sk002 | ss    | ssk001    |
+-------+-------+-----------+
| sk003 | dd    | sk001     |
+-------+-------+-----------+
| sk004 | ff    | sk002     |
+-------+-------+-----------+
| sk005 | gg    | sk002     |
+-------+-------+-----------+
| sk006 | hh    | sk005     |
+-------+-------+-----------+
| sk007 | jj    | sk006     |
+-------+-------+-----------+
| sk008 | kk    | sk006     |
+-------+-------+-----------+
| sk009 | ll    | sk004     |
+-------+-------+-----------+
| sk010 | mm    | sk005     |
+-------+-------+-----------+

我有像这样的invoice_order表

代码语言:javascript
复制
+-------+-------+-----------+--------+
| id    | fname | parent_id | amount |
+=======+=======+===========+========+
| sk001 | aa    | null      | 100    |
+-------+-------+-----------+--------+
| sk002 | ss    | ssk001    | 400    |
+-------+-------+-----------+--------+
| sk002 | dd    | sk001     | 225    |
+-------+-------+-----------+--------+
| sk004 | ff    | sk002     | 50     |
+-------+-------+-----------+--------+
| sk005 | gg    | sk002     | 59     |
+-------+-------+-----------+--------+
| sk006 | hh    | sk005     | 77     |
+-------+-------+-----------+--------+
| sk007 | jj    | sk006     | 89     |
+-------+-------+-----------+--------+
| sk004 | ff    | sk002     | 87     |
+-------+-------+-----------+--------+
| sk009 | ll    | sk004     | 45     |
+-------+-------+-----------+--------+
| sk010 | mm    | sk005     | 56     |
+-------+-------+-----------+--------+

这里我必须计算Ids的个人总数和团队总数,示例(树):

代码语言:javascript
复制
             sk001 
                |
                |--sk002
                |     |--sk004
                |     |    |--sk009
                |     |    |--xy
                |     |
                |     |--sk005
                |
                |--sk003  

例如: Team total of sk002应该包含团队(sk004,sk009,xy)中某个人的总购买金额

我刚刚尝试了这样的东西:

代码语言:javascript
复制
SELECT  (SUM(amount))/2 as indteamtotal 
                                          from    (SELECT * from invoice_order
                                                   order by id, parent_id) products_sorted,
                                                  (SELECT @pv := 'sk002') initialisation
                                          where   find_in_set(parent_id, @pv) > 0
                                          and     length(@pv := concat(@pv, ',', id)) order by parent_id asc

但是我没有得到正确的团队总数,有没有可能使用mysql过程

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-15 21:18:05

如果您有MySQL 8+,则可以使用CTE

代码语言:javascript
复制
with recursive tree as (
 select id from invoice_order where id = 'sk002'
 union
 select i.id from invoice_order i join tree on tree.id = i.parent_id
)  
select sum(amount) from invoice_order where id in (select id from tree);

链接到fiddle

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64371621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档