2013-07-08 30 views
0

我有mysql腳本問題。比較具有相同ID的其他值值總和差表格

我有2個表格,我想在另一個表格中將我的invoiceAmountpaymentAmount進行比較。情況是:許多付款可以用於一張發票,我想比較invoiceAmount (table A)paymentAmount (table B)

我已經用相同invoiceID的計算paymentAmount加入了它,我的問題是如何進行比較(與同invoiceID的invoiceAmount (table A)paymentAmount(table B)和兩個表中的所有行)?真的需要你的幫助傢伙..

我的腳本是:

SELECT invoice.InvoiceID, invoice.InvoiceAmount, pays.InvoiceID, sum(pays.PaymentAmount) as pays, invoice.InvoiceDate 
FROM `payment from customer` as pays 
JOIN invoice ON(pays.InvoiceID=invoice.InvoiceID) 
WHERE pays.InvoiceID in (
    SELECT InvoiceID 
    FROM `payment from customer` 
    GROUP BY InvoiceID 
    HAVING count(*) > 1) 
GROUP BY pays.InvoiceID 
+0

你能提供一些樣本數據? – golimar

+0

'from'payment from customer'as pays' - >在表名中使用空格通常不是一個好主意,特別是當表名包含單詞'FROM'時。 –

+0

golimar:我想找到總和(pays.PaymentAmount)> invoice.InvoiceAmount .. –

回答

0
SELECT * 
FROM (select invoice.InvoiceID, 
      invoice.InvoiceAmount, 
      pays.InvoiceID, 
      pays.PaymentAmount as pays, 
      invoice.InvoiceDate , 
      (select sum(a.PaymentAmount) 
       from `payment from customer` a 
       where a.InvoiceID = invoice.InvoiceID) totalPays 
     from `payment from customer` as pays JOIN invoice 
      ON (pays.InvoiceID=invoice.InvoiceID)) temp 
where InvoiceDate > totalPays 
+0

我的意思是,在這裏添加代碼.. \t \t \t WHERE totalPays> invoice.InvoiceAmount,我總是得到這個錯誤.. [Err] 1054 - 未知列'totalPays'在'where子句'中。 我想選擇'totalPays'> invoice.InvoiceAmount,請幫助.. –

+0

把它放在有條款。即。 ifter group by子句'HAVING totalPays> invoice.InvoiceAmount' – chetan

+0

或作爲支付可以括在共線視圖 – chetan

0

一個字段添加到您的結果表格中,你計算出仍然要支付的款項。

例如,如果你想要的發票清單仍然有餘額支付:

SELECT invoice.InvoiceID, 
     invoice.InvoiceAmount, 
     pays.InvoiceID, 
     sum(pays.PaymentAmount) AS pays, 
     sum(pays.PaymentAmount) - invoice.InvoiceAmount AS StillToPay 
     invoice.InvoiceDate 
    FROM `payment from customer` AS pays 
     JOIN invoice ON pays.InvoiceID = invoice.InvoiceID 
    WHERE pays.InvoiceID IN ( SELECT InvoiceID FROM `payment from customer` 
          GROUP BY InvoiceID 
           HAVING count(*) > 1) 
    AND StillToPay > 0 
GROUP BY pays.InvoiceID 

未經測試的查詢!

+0

Marty McVry:[Err] 1054 - 'where clause'中的未知列'StillToPay' –

相關問題