sql >> Databasteknik >  >> RDS >> Mysql

Mysql summafråga som returnerar felaktigt resultat när du använder flera joins

Använd summan direkt eftersom dina kopplingar förmodligen skapar fler rader i kombination som du vill ha.

Prova följande:

SELECT id, MAX(Total) as FinalTotal ,MAX(Payment) as FinalPayment
FROM si_invoices a 
    left join 
    (select invoice_id, sum(total) as Total from si_invoice_items group by invoice_id) b 
    on a.id = b.invoice_id
    left join
    (select ac_inv_id, sum(payment) as Payment from si_payment group by ac_inv_id) c 
    on c.ac_inv_id = a.id 
group by id

eller om id är unikt:

    SELECT *
FROM si_invoices a 
    left join 
    (select invoice_id, sum(total) as Total from si_invoice_items group by invoice_id) b 
    on a.id = b.invoice_id
    left join
    (select ac_inv_id, sum(payment) as Payment from si_payment group by ac_inv_id) c 
    on c.ac_inv_id = a.id


  1. SQL Server och Spectre/Meltdown Vulnerabilities

  2. Hur man konverterar sträng till tidsstämpel utan tidszon

  3. Vilka är för- och nackdelarna med att utföra beräkningar i sql vs. i din ansökan

  4. Visa begränsningar på tabellkommandot