Ho ereditato il seguente progetto di DB. Le tabelle sono:SQL JOIN, GROUP BY su tre tabelle per ottenere totali
customers
---------
customerid
customernumber
invoices
--------
invoiceid
amount
invoicepayments
---------------
invoicepaymentid
invoiceid
paymentid
payments
--------
paymentid
customerid
amount
La mia domanda ha bisogno di tornare InvoiceID, l'importo della fattura (nella tabella fatture), e l'importo dovuto (importo della fattura al netto di eventuali pagamenti che sono stati fatti verso la fattura) per un dato CUSTOMERNUMBER. Un cliente può avere più fatture.
La seguente query mi dà i record duplicati quando i pagamenti sono fatti più di una fattura:
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'
Come posso risolvere questo problema?
quante righe di pagamento delle fatture possono esistere per una fattura? quanti pagamenti possono esistere per ogni paymentid? –