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

複数の結合を使用すると、Mysql合計クエリが誤った結果を返す

    結合によって必要な組み合わせでより多くの行が作成される可能性があるため、合計を直接使用してください。

    次のことを試してください:

    SELECT id, MAX(Total) as FinalTotal ,MAX(Payment) as FinalPayment
    FROM si_invoices a 
        left join 
        (select invoice_id, sum(total) as Total from si_invoice_items group by invoice_id) b 
        on a.id = b.invoice_id
        left join
        (select ac_inv_id, sum(payment) as Payment from si_payment group by ac_inv_id) c 
        on c.ac_inv_id = a.id 
    group by id
    

    またはidが一意の場合:

        SELECT *
    FROM si_invoices a 
        left join 
        (select invoice_id, sum(total) as Total from si_invoice_items group by invoice_id) b 
        on a.id = b.invoice_id
        left join
        (select ac_inv_id, sum(payment) as Payment from si_payment group by ac_inv_id) c 
        on c.ac_inv_id = a.id
    


    1. MariaDBコネクタ/Pythonベータ版が利用可能になりました

    2. mysqliを使用して、ユーザーが指定した値の数が可変である安全なSELECTクエリを作成するにはどうすればよいですか?

    3. MySQLレプリケーションを使用した地理分散データベースクラスターのセットアップ

    4. 自動インクリメントID列を使用してMySQLビューを作成する