2011-12-23 9 views
0

QUERY 1:どのように2つの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 | 
---------------------------------------- 

としてこれらの結果を結合する必要があります。事前

答えて

0

で ありがとうございますが、このようなすべてのテーブルを結合することにより、2つのクエリを組み合わせることができます:

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 
1

さて、私はあなたが持っている必要がありますと仮定すると

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 

ような何かをしようとすることから始めますあなたが何かを支払ったことを示すインバーターへのトータル、これはすべてのコパニ、IDのグループ分けとそれらの合計とこの合計に支払われた金額のリストを返します。

+0

ありがとう – smk3108

関連する問題