gpt4 book ai didi

php - Mysql树遍历并计数

转载 作者:行者123 更新时间:2023-11-30 22:14:09 24 4
gpt4 key购买 nike

我在mysql中有下表

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 个 id,我需要对其后继者的所有数量求和以获得以下内容:

id   |  amount
1 8
2 32
3 11

我想应该有连接,但不幸的是我无法获得有效的 mysql 请求。有人可以帮助我吗?

UPD:在 php 中我有以下查询:

$tops = $mysqli->query('SELECT * FROM table WHERE top_id IS NULL')

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

最佳答案

这是最粗略的解决方案...毫无疑问,很快就会有人为更具可扩展性的解决方案提供一些提示(可能使用 PHP)...

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;

关于php - Mysql树遍历并计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39023468/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com