sql >> Database teknologi >  >> RDS >> Mysql

Vælg Sum fra to sammenføjede tabeller

Jeg står til tider over for den slags forespørgsler. På grund af flere joinforbindelser bliver værdier fra en bestemt tabel duplikeret, tredoblet osv. For at rette op på dette laver jeg normalt et lille hack ved at dividere summen (på en bestemt tabel ) efter antallet af forskellige id(er) fra andet bord. Dette ophæver effekten af, at der sker flere dubletter.

Prøv følgende forespørgsel:

select i.id, 
       (sum(pr.amount * pr.quantity) / IF(count(distinct pm.id) > 0, count(distinct pm.id), 1) as productAmount, 
       (sum(pm.amount) / IF(count(distinct pr.id) > 0, count(distinct pr.id), 1) as paymentAmount
from invoices as i
left join products as pr on pr.invoice_id=i.id
left join payments as pm on pm.invoice_id=i.id
group by i.id


  1. Kunne ikke finde migreringsmetode:op

  2. Subsonisk understøttelse af Oracle ODP.NET?

  3. Design af lagerstyringsdatabase

  4. Hvordan kan jeg konvertere MySQL-database til SQLite i PHP?