2011-12-23 90 views
0

查詢1:如何結合兩個mysql查詢結果?

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 

QUERY 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 

假設你必須有一個

Select Sum(ri.invoicereferencenumber) + 
     Sum(si.invoicereferencenumber) + 
     SUM(se.invoicereferencenumber) as Total, 
     SUM(pc.cash_amount) + SUM(pch.cheque_value) + SUM(pr.rtgs_value) as Paid, 
     c.Company, c.Id 
from customer c 
inner join rental_invoice ri on c.customerid = ri.customerid 
inner join sale_invoice si on c.customerid = si.customerid 
inner join service_invoice se on c.customerid = se.customerid 
inner join payment_cash pc on c.customerid = pc.cash_cus_id 
inner join payment_cheque pch on c.customerid = pch.cheque_cus_id 
inner join payment_rtgs pr on c.customerid = pr.rtgs_cus_id 
group by c.Company, c.Id 

回答

0

您可以通過連接所有的表像這樣將二者結合起來的查詢總計,以便您支付了一些東西,這將返回一個所有copany,id分組的列表及其總數和支付的總額。

1

嗯,我會開始: 在此先感謝

+0

非常感謝你 – smk3108 2011-12-23 09:15:03