0

異なるテーブル acc から にある 2 つのフィールドを合計したいlabour_master_id。しかし、結果を取得すると、別の結果が表示されます。

これが私が試したものです

select  labours.labour_master_id, 
    sum(labours.amount_paid), 
    sum(labour_cashcredits.amount_paid) 
FROM labours 
left join labour_cashcredits 
    on labours.labour_master_id=labour_cashcredits.labour_master_id 
group by labours.labour_master_id

2 回マッピングされている可能性があるため、間違った結果が表示されます。

現在、合計で問題が発生しています。

これを行う方法はありますか?

このクエリでエラーが発生しました..助けてください

select  l.labour_master_id, l.amount_paid as payable, cc.amount_paid as paid
                FROM
                (
                  select labour_master_id, sum(amount_paid) amount_paid
                  from labours 
                  group by labour_master_id
                ) l
                left join
                (
                  select labour_master_id, sum(amount_paid) amount_paid
                  from labour_cashcredits 
                  group by labour_master_id
                ) cc
                                left join
                (
                  select name,id
                  from labour_masters
                ) lm
                    on l.labour_master_id=cc.labour_master_id 
on l.labour_master_id=lm.labour_masters.id
4

4 に答える 4

1

サブクエリを使用して、各テーブルの合計を実行してみることができます。

select  l.labour_master_id, 
    l.amount_paid, 
    cc.amount_paid
FROM
(
  select labour_master_id, sum(amount_paid) amount_paid
  from labours 
  group by labour_master_id
) l
left join
(
  select labour_master_id, sum(amount_paid) amount_paid
  from labour_cashcredits 
  group by labour_master_id
) cc
    on l.labour_master_id=cc.labour_master_id 
于 2012-12-19T11:42:34.183 に答える
0

これを使って -

      SELECT   labours.labour_master_id, SUM (labours.amount_paid),
     SUM (labour_cashcredits.amount_paid)
  FROM labours,labour_cashcredits
     where labours.labour_master_id = labour_cashcredits.labour_master_id
 GROUP BY labours.labour_master_id
于 2012-12-19T11:39:29.887 に答える
0

これがあなたが望むものであることを願っています、

select  labours.labour_master_id, 
    sum(ifnull(labours.amount_paid,0))+
    sum(ifnull(labour_cashcredits.amount_paid),0) sum
FROM labours 
left join labour_cashcredits 
    on labours.labour_master_id=labour_cashcredits.labour_master_id 
group by labours.labour_master_id
于 2012-12-19T11:42:50.347 に答える
0

2番目のSUMにサブクエリを使用してみてください。

SELECT  labours.labour_master_id, SUM(labours.amount_paid), 
          ( SELECT SUM(amount_paid) FROM labour_cashcredits 
            WHERE labour_master_id = labours.labour_master_id 
            GROUP BY labour_master_id
           ) AS credit_amount_paid
FROM labours
LEFT JOIN labour_cashcredits ON labours.labour_master_id = labour_cashcredits.labour_master_id 
GROUP BY labours.labour_master_id
于 2012-12-19T11:43:13.013 に答える