2012-12-19 106 views
0

我想根据labour_master_id来自不同表格的两个字段的总和。但是当我得到结果时,它显示出不同的结果。来自两个不同表格的两个字段的Mysql总和

这里是我试过

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 

它可以被映射两次,它显示错误的结果。

现在问题正在发生总和。

任何想法如何做到这一点?

我有这个query..please帮助错误

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 
+0

?你可以给数据样本吗? –

+1

,因为在第二个表可能数据退出或没有 –

+0

总和,如果数据退出第二个表 –

回答

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 
+0

感谢它对我有用..是否有任何方法来做没有子查询? –

+0

@AmandeepKaur你可能会改变这种情况,只在第二张表上使用子查询,但IMO有时候更容易使用子查询。 – Taryn

+0

好的非常感谢:) –

0

使用this--

 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 
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 
0

尝试使用子查询第二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 
相关问题