Odziedziczyłem następujący projekt DB. Tabele są:SQL JOIN, GROUP BY na trzech tabelach, aby uzyskać sumy
customers
---------
customerid
customernumber
invoices
--------
invoiceid
amount
invoicepayments
---------------
invoicepaymentid
invoiceid
paymentid
payments
--------
paymentid
customerid
amount
Moje zapytanie musi powrócić invoiceid, kwota faktury (w tabeli faktur), a kwota do zapłaty (kwota faktury minus wszelkie płatności, które zostały wprowadzone do faktury) dla danego CUSTOMERNUMBER. Klient może mieć wiele faktur.
Poniższe zapytanie daje mi zduplikowane rekordy podczas wielokrotnego dokonywania płatności do faktury:
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'
Jak mogę rozwiązać ten problem?
ile wierszy płatności faktury może istnieć dla jednej faktury? ile płatności może istnieć dla każdej płatności? –