mysql - 如何合并两个mysql查询结果?

标签 mysql

查询 1:

SELECT SUM(total) AS total, company, id 
FROM
(SELECT  invoicereferencenumber AS ref, invoiceamount AS total, companyname AS company, customer.customerid AS id FROM customer, rental_invoice AS r WHERE customer.customerid=r.customerid
UNION
SELECT  invoicereferencenumber AS ref, invoiceamount AS total, companyname AS company, customer.customerid AS id FROM customer, sale_invoice AS s WHERE customer.customerid=s.customerid
UNION
SELECT  invoicereferencenumber AS ref, invoiceamount AS total, companyname AS company, customer.customerid AS id FROM customer, service_invoice AS se WHERE customer.customerid=se.customerid)
AS tmptotal
GROUP BY id

查询 2:

SELECT SUM(paid) AS paid, company, cid 
FROM
(SELECT cash_amount AS paid, companyname AS company, customerid AS cid FROM payment_cash AS p, customer AS c WHERE cash_cus_id=customerid
UNION
SELECT cheque_value AS paid, companyname AS company, customerid AS cid FROM payment_cheque AS p, customer AS c WHERE cheque_cus_id=customerid
UNION
SELECT rtgs_value AS pain, companyname AS company, customerid AS cid FROM payment_rtgs AS p, customer AS c WHERE rtgs_cus_id=customerid)
AS tmppaid
GROUP BY cid

我必须将这些结果合并为

----------------------------------------
|  total  |   Paid   |  company  | id  |
----------------------------------------

请帮帮我。 提前致谢

最佳答案

好吧,我会首先尝试类似的事情

SELECT  TotalQuery.*,
        PaidQuery.paid
FROM    (
            SELECT SUM(total) AS total, company, id  
            FROM 
            (SELECT  invoicereferencenumber AS ref, invoiceamount AS total, companyname AS company, customer.customerid AS id FROM customer, rental_invoice AS r WHERE customer.customerid=r.customerid 
            UNION 
            SELECT  invoicereferencenumber AS ref, invoiceamount AS total, companyname AS company, customer.customerid AS id FROM customer, sale_invoice AS s WHERE customer.customerid=s.customerid 
            UNION 
            SELECT  invoicereferencenumber AS ref, invoiceamount AS total, companyname AS company, customer.customerid AS id FROM customer, service_invoice AS se WHERE customer.customerid=se.customerid) 
            AS tmptotal 
            GROUP BY id
        ) TotalQuery LEFT JOIN
        (
            SELECT SUM(paid) AS paid, company, cid  
            FROM 
            (SELECT cash_amount AS paid, companyname AS company, customerid AS cid FROM payment_cash AS p, customer AS c WHERE cash_cus_id=customerid 
            UNION 
            SELECT cheque_value AS paid, companyname AS company, customerid AS cid FROM payment_cheque AS p, customer AS c WHERE cheque_cus_id=customerid 
            UNION 
            SELECT rtgs_value AS pain, companyname AS company, customerid AS cid FROM payment_rtgs AS p, customer AS c WHERE rtgs_cus_id=customerid) 
            AS tmppaid 
            GROUP BY cid 
        ) PaidQuery     ON  TotalQuery.id = PadiQuery.id
                        AND TotalQuery.company = PaidQuery.company

假设您必须有一个总计来反演您已支付的金额,这将返回所有 copany,id 分组的列表及其总计以及在此总计上支付的金额。

关于mysql - 如何合并两个mysql查询结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8612453/

相关文章:

mysql - 如何设置同一个表中某些行的列值与其他行的列值相同?

mysql - 维护实时远程 MySQL 数据库的本地只读副本的有效方法是什么?

mysql - 为什么导入的 MySQL 转储将某些列值显示为 BLOB?

php - 合并所有表以获得结果

mysql - 仅更新具有与第一行相同值组合的列的行 - MySQL

mysql - 如何使用 LIKE mysql 匹配列中的文本

mysql - SQLbuilder LIKE 参数带 %

MySQL:基于两列内连接进行更新

mysql - 添加 WHERE CLAUSE 后 $SQL UPDATE 不起作用

php - 检查用户是否存在