Mysql 左连接和一列求和问题

问题描述 投票:0回答:1

我有2张桌子:

表 tms_bills

id load_id 公司名称
1 11 公司1
2 11 公司1
3 11 公司2
4 12 公司3

表 tms_ payment

id 金额 payment_associate_id
11 100 2
12 200 2
13 200 3
14 50 6

我想要 tms_bills 中的行,其中 load_id=11 且 company_name = 'company1' 以及 tms_ payments 中 'amount' 列的总和,其中 id = payment_associate_id

SELECT tb.*, SUM(amount) AS paid_amount
  FROM tms_payments tp
  LEFT JOIN tms_bills tb
    ON tb.id = tp.payment_associate_id
 WHERE tb.load_id = 11
   AND tb.company_name = 'company1'
 ORDER BY tb.id DESC;

上面的代码获取了错误的结果。

输出应该是:

id load_id 公司名称 金额
1 11 公司1 0
2 11 公司1 300

有人可以帮我做这个吗?

sql mysql left-join
1个回答
0
投票

尝试以下查询。

SELECT tb.*, SUM(IFNULL(amount,0)) AS paid_amount
FROM tms_bills tb
LEFT JOIN tms_payments tp ON tb.id = tp.payment_associate_id
WHERE tb.load_id = 11 AND tb.company_name = 'company1'
GROUP BY tb.id
ORDER BY tb.id ASC;
© www.soinside.com 2019 - 2024. All rights reserved.