将内部联接与sum一起使用时出现问题

时间:2018-09-21 15:18:23

标签: mysql sql sum inner-join

我有两(2)个表: ps_wk_mp_seller_transaction_history

enter image description here 还有 ps_wk_mp_seller_order_status

enter image description here

仅当 current_state = 5

时,我才希望总计 seller_amount

为此,我写了这个:

select sum(seller_amount) as seller_amount
from ps_wk_mp_seller_transaction_history th inner join 
     ps_wk_mp_seller_order_status os
     on os.id_order = th.id_transaction and
        os.current_state = 5 and
        th.id_customer_seller = 2;

对于id_customer_seller = 2我得到了这个 4984.020000(4950 + 34.02),它是准确的

但是对于id_customer_seller = 5,我得到的是 25.848000 而不是NULL

有人可以帮我吗?

也许您可以测试一下自己,代码如下:https://github.com/kulturman/fakerepo

1 个答案:

答案 0 :(得分:0)

首先,您的记录有一些逻辑问题,id_transaction的两次交易具有相同的id_transaction,但数额不同且state不同!因此ID为41且状态为5的交易以及为什么客户5不会为null的原因是因为41处于状态5。

要解决此问题

每个交易的交易ID必须是唯一ID,以便区分交易状态和金额

查询应该是这样

select sum(seller_amount) as seller_amount
from ps_wk_mp_seller_transaction_history th 
left join ps_wk_mp_seller_order_status os 
  on os.id_order=th.id_transaction
where 
  th.id_customer_seller = 2
  and  os.current_state=5 

工作示例here