Php Mysql:未找到结果时显示0和事务类型

Php Mysql:未找到结果时显示0和事务类型,php,mysql,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

表格结构:

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的初学者。提前感谢。

您需要有一个单独的表,其中包含每个唯一的
事务
值。这可以使用单独的表来完成,也可以使用派生表,如下所示:

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

这将显示,但如果您的表中没有太多行,那么它应该不会太大。如果您在列上有一个专用的表和索引,那么它的性能会更好。您需要有一个单独的表,其中包含每个唯一的
事务
值。这可以使用单独的表来完成,也可以使用派生表,如下所示:

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

这将显示,但如果您的表中没有太多行,那么它应该不会太大。如果在列上有一个专用的表和索引,它的性能会更好

为什么会有一个laravel标记?为什么需要在SQL中使用它?你能在PHP中也达到预期的效果吗?为什么有一个laravel标签?为什么你需要它在SQL中?您是否也能在PHP中实现所需的结果?