sql >> Databáze >  >> RDS >> Mysql

Vyberte Součet ze dvou spojených tabulek

Občas se setkávám s podobnými dotazy. Kvůli vícenásobným spojením se hodnoty z konkrétní tabulky duplikují, ztrojnásobují atd. Abych to vyřešil, obvykle udělám malý hack vydělením součtu (na konkrétní tabulce ) podle počtu odlišných ID od ostatních stůl. To neguje účinek vícenásobných duplikátů.

Zkuste následující dotaz:

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 Změna uživatelského hesla

  2. Může magento používat více slave MySQL?

  3. Povolte SQL Server Agent prostřednictvím SSMS

  4. Převod mezi časovými pásmy v Postgresu