sql >> Database >  >> RDS >> Mysql

Selecteer Som uit twee samengevoegde tabellen

Ik word wel eens geconfronteerd met dit soort vragen. Door meerdere joins worden waarden van een bepaalde tabel gedupliceerd, verdrievoudigd enz. Om dit op te lossen, doe ik normaal gesproken een kleine hack door de som te delen (op een bepaalde tabel ) door het aantal verschillende ID('s) van de andere tafel. Dit negeert het effect van meerdere duplicaten.

Probeer de volgende zoekopdracht:

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. MySQL toont huidige verbindingsinformatie

  2. Hoe tel je hoeveel artsen er door elke patiënt worden geboekt?

  3. Is er een slimme manier om meerdere query's in mysql uit te voeren, gescheiden door een puntkomma;

  4. Hoe meerdere kolommen als één te combineren en op te maken met aangepaste tekenreeksen?