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

MYSQL LEFT JOIN INCORRECT RESULT

    クレジットテーブルに複数の行があります。これにより、問題の原因となるグループの前に複数の行が作成されます。 group byを取り出してすべての列を選択すると、これを確認できます。

    サブ参加でグループ化すると、この問題は解消され、グループ化の前に顧客ごとに1つの行ができます。

    SELECT 
      customers.id as id, 
      customers.cust_name AS customer_name,
      SUM(cust_debit.debit_amount) as debit,
      SUM(cust_credit.credit_amount) as credit,
      (SUM(cust_debit.debit_amount)) - (SUM(cust_credit.credit_amount)) as balance
    FROM customers
    LEFT JOIN cust_debit  ON customers.id = cust_debit.cust_id
    LEFT JOIN (
      SELECT cust_id, sum(credit_amount) as credit_amount)
      from cust_credit
      group by cust_id
    ) cust_credit ON customers.id = cust_credit.cust_id
    GROUP BY customers.id
    ORDER BY customers.id
    



    1. Java EE WebアプリケーションからWindows認証を使用してSQLServerに接続できますか?

    2. MySQL group byを使用して、その日にレコードがないときに空の値を埋める方法

    3. WHERE vs HAVING

    4. QUOTED_IDENTIFIERを理解する