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

Mysql join og sum fordobler resultatet

Dens fordobling, fordi du har titlen gentaget i fonds- og indtægtstabeller. Dette multiplicerer antallet af poster, hvor det matcher. Dette er ret nemt at se, hvis du fjerner de samlede funktioner og ser på de rå data. Se her

Måden at omgå dette på er at skabe inline visninger af dine aggregater og deltage i disse resultater.

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 
 

output

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

demo



  1. Sådan omdøbes to tabeller i en atomoperation i MySQL

  2. SQLite JSON_QUOTE()

  3. Hvordan administrerer du databaser i udvikling, test og produktion?

  4. Hvorfor har du brug for datamodellering?