sql >> Base de Datos >  >> RDS >> Mysql

Seleccione Suma de dos tablas unidas

A veces me enfrento a este tipo de consultas. Debido a las uniones múltiples, los valores de una tabla en particular se duplican, triplican, etc. Para solucionar esto, normalmente hago un pequeño truco dividiendo la suma (en una tabla en particular ) por el recuento de identificadores distintos de los otros mesa. Esto niega el efecto de que ocurran múltiples duplicados.

Pruebe la siguiente consulta:

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