首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql树的遍历和计数

Mysql树的遍历和计数
EN

Stack Overflow用户
提问于 2016-08-19 00:41:12
回答 1查看 98关注 0票数 1

我在mysql中得到了以下表格

代码语言:javascript
复制
id|top_id|amount
 1    NULL     2
 2    NULL     8
 3    NULL     4
 4       3     7
 5       2     8
 6       2     4
 7       5     5
 8       7     1
 9       6     6
10       8     6

对于前3个i,我需要将其后继者的所有数量相加,才能得到以下结果:

代码语言:javascript
复制
id   |  amount
1         8
2         32
3         11

我猜应该有连接,但不幸的是,我不能得到工作的mysql请求。有人能帮帮我吗?

更新:在php中,我有以下查询:

代码语言:javascript
复制
$tops = $mysqli->query('SELECT * FROM table WHERE top_id IS NULL')

这显然只返回3个top ids和它们的普通数值(分别为2、8和4)。我需要得到12,28和11,而不是2,8和4,这就是问题所在(

EN

回答 1

Stack Overflow用户

发布于 2016-08-19 01:00:07

这是最原始的解决方案。毫无疑问,很快就会有人为更具伸缩性的解决方案提供一些提示(可能是使用PHP)……

代码语言:javascript
复制
SELECT a.id
     , COALESCE(a.amount,0)
     + COALESCE(b.amount,0)
     + COALESCE(c.amount,0)
     + COALESCE(d.amount,0)
     + COALESCE(e.amount,0)
     + COALESCE(f.amount,0) total 
  FROM my_table a 
  LEFT 
  JOIN my_table b 
    ON b.top_id = a.id 
  LEFT 
  JOIN my_table c 
    ON c.top_id = b.id 
  LEFT 
  JOIN my_table d 
    ON d.top_id = c.id 
  LEFT 
  JOIN my_table e 
    ON e.top_id = d.id 
  LEFT 
  JOIN my_table f 
    ON f.top_id = e.id 
 WHERE a.top_id IS NULL;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39023468

复制
相关文章

相似问题

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