将两个Mysql总和选择查询组合为一个查询
我有以下两个查询的和值将两个Mysql总和选择查询组合为一个查询,mysql,sum,Mysql,Sum,我有以下两个查询的和值 问题1:: 从表1中选择总和(价格),其中acc\u id=“555” 查询2: 从表2中选择总和(价格),其中账户='555'&&active='1' 我尝试组合这两个查询,但给出了错误的求和结果,例如,如果query1的求和为:-86500而Query2的求和为:76000,则结果必须是-10500,但结果显示为类似-486000 我试着这样做,但没有得到预期的结果 SELECT SUM(t1.price + t2.price) AS TotalCredit FRO
问题1:: 从表1中选择总和(价格),其中
acc\u id
=“555”
查询2:
从表2中选择总和(价格),其中账户='555'&&active='1'
我尝试组合这两个查询,但给出了错误的求和结果,例如,如果query1的求和为:-86500
而Query2的求和为:76000
,则结果必须是-10500
,但结果显示为类似-486000
我试着这样做,但没有得到预期的结果
SELECT SUM(t1.price + t2.price) AS TotalCredit
FROM TABLE1 AS t1, TABLE2 AS t2
WHERE t1.`acc_id` = '555' && t2.`Account`='555' && t2.`Active`='1'
表格图像:试试这个
SELECT (t1.price + t2.price) AS TotalCredit
FROM TABLE1 AS t1, TABLE2 AS t2
WHERE t1.`acc_id` = '555' && t2.`Account`='555' && t2.`Active`='1'
编辑:
我想你在找什么
SELECT (SUM(t1.price)+SUM(t2.price) )/2 AS TotalCredit
FROM Table1 AS t1, Table2 AS t2
WHERE t1.`acc_id` = '555' && t2.`account`='555' && t2.`active`='1'
试试这个
SELECT SUM(C.TOTAL) AS TOTAL_CREDIT FROM (SELECT SUM(A.price) AS TOTAL FROM TABLE1 A WHERE A.acc_id = '555'
UNION ALL
SELECT SUM(B.price) AS TOTAL FROM TABLE2 B WHERE B.account = '555' && B.active='1') C;
试试看
SELECT (SUM(t1.price) + SUM(t2.price)) AS TotalCredit
FROM TABLE1 AS t1, TABLE2 AS t2
WHERE t1.`acc_id` = '555' && t2.`Account`='555' && t2.`Active`='1'
由于加入,记录的数量会被复制,因此总和的值会更高
试试这个
SELECT sum(prc)
FROM (
SELECT SUM(price) prc FROM TABLE1 WHERE acc_id = '555'
union all
SELECT SUM(price) prc FROM TABLE2 WHERE account = '555' && active='1'
) a
这个怎么样:
SELECT SUM(a)
FROM
(SELECT SUM(price) AS a
FROM TABLE1
WHERE acc_id = '555'
UNION ALL
SELECT SUM(price) AS a
FROM TABLE2
WHERE account = '555' && active='1')
加入
可能会更好。:)如果您能向我们展示表模式,那就更好了。下面是一个基于一些假设样本数据的解决方案
样本数据:
表1:
ID PRICE
11 200
55 300
33 200
44 100
55 500
表2:
ID PRICE ACTIVE
1 200 0
2 300 1
55 200 0
55 100 1
55 400 1
查询:
select sum(t.price) + x.tb2credit
from tb1 as t
inner join
(SELECT id, SUM(price) AS Tb2Credit
FROM tb2
WHERE id = 55
and `Active`=1) x
on t.id = x.id
结果:
SUM(T.PRICE) + X.TB2CREDIT
1300
您没有提到一个表与另一个表之间的关系,因此不知道如何(或是否)以有意义的方式连接它们。你能给出你试图求和的数据的例子,并谈谈为什么数据分布在两个表中吗?@root试试我的解决方案,我期待着,你会得到你期望的结果。但是,我仍然在等待你的回应。我添加了我两个孩子的照片table@root别忘了接受有用的答案。:)谢谢大家,问题已通过Akhil回答解决谢谢goodmood,但现在将结果作为数组给出,如何将一个结果作为和?现在查看我的编辑和演示,尝试更改演示中的值并查看结果谢谢:-“但返回错误的结果:,仅更改其中一个数字进行测试。谢谢,但得到此错误错误代码:1248\n每个派生表都必须有自己的别名
。。。我加了一张我两个孩子的照片table@root现在试试。我已经更新了我的查询。如果有帮助的话。然后接受它,否则,让我知道。谢谢,但给出错误:未知列“字段列表”中的“A.price”
,我接受akhil回答,谢谢大家。。。这是一个可怕的问题:-“没关系。你可能会做错什么,因为我验证了上面的查询。然而你找到解决办法了。我很高兴:)谢谢,但是有这个错误:error code:1248\n每个派生表都必须有自己的别名
您注意到内部查询后的a
了吗?:哦,谢谢,抱歉,我留下了那个字符。。。现在开始。。。等待在我的真实表上进行测试。请解释字母“a”在做什么?@chikitin“Mysql中的每个派生表都必须有一个别名”。@root请查看这里的解决方案。请向我们展示您的表架构:)acc_id
表1和account
表2必须是准确的,我已经在第一篇文章中添加了我的表的图像,请查看它。@root您所需要做的就是,sum
表2价格
对于给定的账户id
,如果active=1
。然后将其添加到表1sum
中,以获得相同的acct id
。这就是我提出的问题背后的逻辑。我将尝试使用您的确切信息:)谢谢,但出现以下错误:错误代码:1248\n每个派生表在SQLYOG上都必须有自己的别名