Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

A junção e a soma do MySQL estão dobrando o resultado


Está dobrando porque você tem títulos repetidos nas tabelas de fundos e receitas. Isso multiplica o número de registros onde ele corresponde. Isso é muito fácil de ver se você remover as funções agregadas e observar os dados brutos. Veja aqui

A maneira de contornar isso é criar visualizações inline de seus agregados e juntar-se a esses resultados.
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 

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

demonstração