Php 如何计算表中两行的总和?
该表的值如下:Php 如何计算表中两行的总和?,php,mysql,Php,Mysql,该表的值如下: group_name group_id parent_group_id amount One 69 10 1000 Two 70 11 500 Three 71 69 700 这里,如果组id=69与我尝试使用的父组i
group_name group_id parent_group_id amount
One 69 10 1000
Two 70 11 500
Three 71 69 700
这里,如果组id=69
与我尝试使用的父组id=69
匹配,我需要对amount列中的值求和
SUM(CASE WHEN fee_groups.groups_id = fee_groups.parent_fee_groups_id
THEN amount
ELSE 0
END) AS total
但在这条线上我什么也做不了。如果我错了,那么请帮助我实现以下结果
group_name group_id parent_group_id amount
One 69 10 1700
Two 70 11 500
在这里,
group\u id
和parent\u group\u id
建立了一种关系,如果父组id
与组id
中的任何一个匹配,那么这两个都属于一个组,因此我需要将这两个值相加。根据您的意愿,将组id
和父组id
包括在内对我来说没有意义。你也没有解释“71”发生了什么
这将合并共享“69”的组,并将其他组分开。尝试以下解决方案:
SELECT t1.group_name, t1.group_id, t1.parent_group_id,
(t1.amount + IFNULL(t2.amount,0)) Amount
FROM Table1 t1
LEFT JOIN Table1 t2
ON t1.group_id = t2.parent_group_id
OR t2.group_id = t1.parent_group_id
WHERE t1.group_name < t2.group_name OR t2.group_name IS NULL
GROUP BY t1.group_name, t1.group_id, t1.parent_group_id
试试这个SELECT
group_name,group_id,parent_group_id,
(CASE WHEN group_id = 69 THEN
(amount+(SELECT amount FROM table1 WHERE parent_group_id = 69))
ELSE amount END) as new_amount
FROM Table1 WHERE parent_group_id !=69;
是否执行下面的查询或此链接
选择t.group\u name、t.group\u id、t.parent\u group\u id、,
(t.group\u id=t1.parent\u group\u id然后t1.amount+t.amount else t.amount end时的情况)
从t
在t.group\u id=t1.parent\u group\u id上左连接t作为t1
其中t.group_id 71
我需要根据组\u id
与家长\u费用\u组\u id
的匹配来计算一个值的总和。。更新了我的问题little..您想要仅对组或所有组的组id的结果吗_id@AnkitAgrawal,如果两个ID都匹配,假设group_id的值为69,parent_group_id的值为69,那么它应该被连接起来,金额应该得到总和。但是当它与groupone
一起添加时,我不需要groupthird
的group_id=71。但是值71
将不会是静态的,因为场景是这样的,如果存在匹配,那么它会是静态的已添加,且相应的组\u id与父\u id匹配。将从行中删除。
group_name group_id parent_group_id Amount
One 69 10 1700
Two 70 11 500
SELECT
group_name,group_id,parent_group_id,
(CASE WHEN group_id = 69 THEN
(amount+(SELECT amount FROM table1 WHERE parent_group_id = 69))
ELSE amount END) as new_amount
FROM Table1 WHERE parent_group_id !=69;
select t.group_name,t.group_id,t.parent_group_id,
(case when t.group_id = t1.parent_group_id then t1.amount + t.amount else t.amount end)
from t
left join t as t1 on t.group_id = t1.parent_group_id
where t.group_id <>71