Mysql:没有找到结果时显示0和事务类型

时间:2016-10-09 23:35:28

标签: php mysql

表格结构:

reference|transaction|member|summary|amount|action_by|created_at(unix timestamp)

我目前的Sql是:

select COALESCE(sum(`amount`) , 0) as `amount` , `transaction`
from `transactions` 
where 
    `transaction` IN ('payment', 'deposit', 'withdraw') and 
    `created_at` >= unix_timestamp(DATE_SUB(NOW(), INTERVAL 15 DAY))
group by transaction

我们说没有找到付款记录。 我仍然希望得到它的结果。 目前的结果是:

100 | deposit 
200 | withdraw

我需要的是:

100 | deposit
200 | withdraw
0   | payment

我尝试了几件事,但我无法产生预期的效果。 请帮忙,我是sql的初学者。提前谢谢。

1 个答案:

答案 0 :(得分:0)

您需要一个包含每个唯一transaction值的单独表格。这可以使用单独的表来完成,也可以使用如下的派生表:

SELECT COALESCE(sum(`amount`),0) as amount, der.transaction_type
FROM (SELECT 'payment' as transaction_type
UNION SELECT 'deposit'
UNION SELECT 'withdraw') der
LEFT JOIN `transactions` t on t.transaction=der.transaction_type AND `transaction` AND `created_at` >= unix_timestamp(DATE_SUB(NOW(), INTERVAL 15 DAY))
group by der.transaction_type

这将显示,但如果你的表中没有很多行,那么它不应该是一个很大的交易。如果列上有专用表和索引

,它会表现得更好