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

複数のmysqlテーブル列の合計、減算、および結合

    複数のトランザクション、他のローン金額、および顧客ごとの支払いがあるため、直接JOINを実行することはできません。 行の複製が発生し、値が正しくなくなるため、テーブルを相互に結合します。代わりに、SUM クライアントベースの各テーブル内のすべての値 JOINを実行する 。さらに、一部のクライアントには各テーブルにエントリがないため、LEFT JOINを使用する必要があります sおよびCOALESCE 空の行によってSUMがNULLにならないように結果を調整します 。このクエリにより、必要な結果が得られます:

    SELECT c.id, c.name,
           COALESCE(t.transactions, 0) + COALESCE(o.amounts, 0) - COALESCE(p.payments, 0) AS amount
    FROM client c
    LEFT JOIN (SELECT id, SUM(load_amount) + SUM(additional) AS transactions
               FROM transaction
               GROUP BY id) t on t.id = c.id
    LEFT JOIN (SELECT id, SUM(amount) AS amounts
               FROM other_loan
               GROUP BY id) o ON o.id = c.id
    LEFT JOIN (SELECT id, SUM(payment_amount) AS payments
               FROM payment
               GROUP BY id) p ON p.id = c.id
    GROUP BY c.id
    

    出力(サンプルデータ用):

    id  name        amount
    1   Robin       8718
    2   Cinderella  21
    3   Leomar      0
    

    SQLFiddleのデモ




    1. アクアデータスタジオ

    2. PHPを使用して$date変数をmysqlデータベースに保存する

    3. MySQL/MariaDBでデータベースを削除する方法

    4. シェルを使用してデータベースがPostgreSQLに存在するかどうかを確認します