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

2つの結合されたテーブルから合計を選択します

    私は時々この種の質問に直面します。複数の結合があるため、特定のテーブルの値が重複したり、3重になったりします。これを修正するために、私は通常、合計を除算して小さなハックを行います(特定のテーブルその他とは異なるIDの数による テーブル。これにより、複数の重複が発生した場合の影響が無効になります。

    次のクエリを試してください:

    select i.id, 
           (sum(pr.amount * pr.quantity) / IF(count(distinct pm.id) > 0, count(distinct pm.id), 1) as productAmount, 
           (sum(pm.amount) / IF(count(distinct pr.id) > 0, count(distinct pr.id), 1) as paymentAmount
    from invoices as i
    left join products as pr on pr.invoice_id=i.id
    left join payments as pm on pm.invoice_id=i.id
    group by i.id
    


    1. Postgresqlの拡張機能の作成に失敗する

    2. Zend FrameworkでMySQLを構成する方法は?

    3. OracleInstantClientのインストール

    4. スタンドアロンjythonのクラスパスを指定する