Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Dołączenie Mysql i suma podwajają wynik

Jest to podwojenie, ponieważ tytuł powtarza się w tabelach funduszy i przychodów. To mnoży liczbę rekordów, w których pasuje. Łatwo to zobaczyć, jeśli usuniesz funkcje agregujące i spojrzysz na surowe dane. Zobacz tutaj

Sposobem na obejście tego jest utworzenie wbudowanych widoków agregatów i dołączenie do tych wyników.

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 

wyjście

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

demo



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Co tak naprawdę oznacza liczba w nawiasie?

  2. Przewodnik po projektowaniu bazy danych do quizu w MySQL

  3. Dołącz do dwóch tabel MySQL za pomocą PHP

  4. Mysql Zwiększanie wydajności zmiennych

  5. Używanie Elasticsearch-river-mysql do przesyłania strumieniowego danych z bazy danych MySQL do Elasticsearch