在mysql数据库中,我有tblA.price和tblB.price。它们之间有no relationship
个。
我想总结一下tableA和tableB的所有销售情况。这将是总和(tblA.price)+ sum(tblB.price)AS total。
我该如何执行该查询?
答案 0 :(得分:1)
@cjsfj显示的联盟可行,以及其他几个选项:
执行两个标量子查询并将它们一起添加。
select (select sum(price) from tblA) + (select sum(price) from tblB) as total;
从您的应用程序中执行两个查询,获取每个查询的结果,然后将它们一起添加。
答案 1 :(得分:0)
快速而肮脏。工会并不好。但是如果你有固定数量的表,这将有效。性能可能会变得棘手,而且它肯定不是很漂亮,但会回答你的问题。
select sum(price) as totalprice from
(select sum(a.price) as price
from a
union all
select sum(b.price) as price
from b) as ab
答案 2 :(得分:0)
为了补充其他答案,当其中一个表没有结果时,我遇到了一些问题。它返回null。出于这个原因,我必须过滤该结果并将其转换为 0 。刚做IFNULL(SUM(field),0)
。
这是我的最终查询:
SELECT
IFNULL(SUM(tblA.price),0) + (SELECT
IFNULL(SUM(fieldB),0)
FROM
tblB
WHERE
creation_date BETWEEN '$startDT' AND DATE_SUB(NOW(), INTERVAL 1 HOUR) AS amount
FROM
tableA tblA
WHERE
tblA.transaction_date BETWEEN 'startDT' AND DATE_SUB(NOW(),
INTERVAL 1 HOUR)
AND tblA.service_type <> 'service1'
AND tblA.service_type <> 'service2'
AND tblA.service_type <> 'service3';