连接两个查询,字段总和为

时间:2018-12-21 22:08:08

标签: mysql

我有两个查询来对同一数据库中所有产品的销售和其他服务的销售进行总计,我想知道是否有可能将这两个查询简化为一个。不是因为它们只是查询,而是因为它们的总数。我最好在这里显示示例

查询1

SELECT SUM(totalone) AS `total` FROM `sold_products` 
WHERE `date`=DATE(NOW()) AND `payment_method`='cash'

查询2

SELECT SUM(totaltwo) AS `total` FROM `sold_services` 
WHERE `date`=DATE(NOW()) AND `payment_method`='cash'

现在,我将两个值添加到PHP代码中。它工作正常,但我只想知道如何在一个查询中执行此操作。我总是查询相同的付款方式和相同的日期,但查询的是同一数据库中的两个不同的表。

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

您想要的是UNION运算符。您可以将这两个查询合并为一个查询。

SELECT SUM(total) AS `total` FROM (
SELECT `total` FROM `sold_products` 
WHERE `date`='$today' AND `payment_method`='cash'
UNION
SELECT `total` FROM `sold_services` 
WHERE `date`='$today' AND `payment_method`='cash')

此处是有关MySQL UNION的更多信息的文章: http://www.mysqltutorial.org/sql-union-mysql.aspx

答案 1 :(得分:0)

您可以使用UNION,然后将以下值相加:

SELECT SUM(total) FROM (
    SELECT totalone AS `total` FROM `sold_products` 
        WHERE `date`=DATE(NOW()) AND `payment_method`='cash'
    UNION ALL
    SELECT totaltwo AS `total` FROM `sold_services` 
        WHERE `date`=DATE(NOW()) AND `payment_method`='cash'
)

请确保使用UNION ALL而不是UNION,否则最终将丢弃total列中的所有重复值,从而给您错误的总和。