以下のDB設計を継承しています。テーブルは次のとおりです。
customers
---------
customerid
customernumber
invoices
--------
invoiceid
amount
invoicepayments
---------------
invoicepaymentid
invoiceid
paymentid
payments
--------
paymentid
customerid
amount
私のクエリは、特定の customernumber について、invoiceid、請求額 (invoices テーブル内)、および請求額 (請求額から請求書に対して行われた支払いを差し引いたもの) を返す必要があります。顧客は複数の請求書を持っている場合があります。
次のクエリでは、請求書に対して複数の支払いが行われると、重複したレコードが返されます。
SELECT i.invoiceid, i.amount, i.amount - p.amount AS amountdue
FROM invoices i
LEFT JOIN invoicepayments ip ON i.invoiceid = ip.invoiceid
LEFT JOIN payments p ON ip.paymentid = p.paymentid
LEFT JOIN customers c ON p.customerid = c.customerid
WHERE c.customernumber = '100'
どうすればこれを解決できますか?