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

Mysql join e sum raddoppiano il risultato

È il raddoppio perché hai il titolo ripetuto nelle tabelle dei fondi e delle entrate. Questo moltiplica il numero di record in cui corrisponde. Questo è abbastanza facile da vedere se rimuovi le funzioni aggregate e guardi i dati grezzi. Vedi qui

Il modo per aggirare questo problema è creare viste in linea dei tuoi aggregati e unirti a quei risultati.

SELECT R.title_id, 
       R.revenue, 
       R.cost, 
       F.interest 
FROM   (SELECT title_id, 
               Sum(revenue) revenue, 
               Sum(cost)    cost 
        FROM   revenue 
        GROUP  BY revenue.title_id) r 
       LEFT JOIN (SELECT title_id, 
                         Sum(interest) interest 
                  FROM   fund 
                  GROUP  BY title_id) f 
              ON r.title_id = F.title_id 

uscita

| TITLE_ID | REVENUE | COST | INTEREST |
----------------------------------------
|        1 |      30 |   11 |       30 |
|        2 |      30 |   11 |       30 |
|        3 |      30 |   11 |       30 |
|        4 |      30 |   11 |       30 |

demo