我有两(2)个表: ps_wk_mp_seller_transaction_history
还有 ps_wk_mp_seller_order_status
仅当 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
答案 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