sql >> データベース >  >> RDS >> Mysql

Mysqlの結合と合計は結果を2倍にします

    ファンドと収益のテーブルでタイトルが繰り返されているため、2倍になります。これにより、一致するレコードの数が増加します。これは、集計関数を削除して生データを見ると非常に簡単に確認できます。 こちらをご覧ください

    これを回避する方法は、集計のインラインビューを作成し、それらの結果に参加することです。

    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 
    

    出力

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

    デモ



    1. 関係は存在しません

    2. 日時php/mysqlに30分を追加

    3. Oracleに接続するためのロギングハンドラを作成しますか?

    4. UNIONがPostgreSQLでどのように機能するか