2013-02-14 60 views
1

我这里有一个问题..MySQL的组返回所有的行

可以说我有这个表...

waktu    | tglTransaksiJual | nominal | ongkir | STATUS | idUser 
--------------------------------------------------------------------------------------- 
2013-02-01 00:00:00 | 2013-01-29 15:00:00 | 10000  | 10000  | APPROVED | 1 
0000-00-00 00:00:00 | 2013-02-02 15:00:00 | 20000  | 0   | DONE  | 2 
0000-00-00 00:00:00 | 2013-02-02 15:00:00 | 10000  | 5000  | DONE  | 2 
2013-02-03 00:00:00 | 2013-02-01 15:00:00 | 20000  | 0   | APPROVED | 3 

,我使用此查询

SELECT DISTINCT(date(IF(waktu = '0000-00-00 00:00:00', tglTransaksiJual, waktu))) AS thedate, SUM(nominal+ongkir) AS total 
     FROM transaksijual 
     WHERE IF(waktu = '0000-00-00 00:00:00', tglTransaksiJual, waktu) BETWEEN '2013-02-01' AND '2013-02-05' AND status LIKE 'DONE%' AND idUser LIKE '2%'  
     GROUP BY thedate 
     ORDER BY thedate ASC 

但结果我已经是

thedate | total 
------------------- 
2013-02-01 | 30000 

而且我想要的是l ike this

thedate | total 
------------------ 
2013-02-01 | 0 
2013-02-02 | 35000 
2013-02-03 | 0 

我该怎么做?那可能吗?? 所以得出的结论是..当没有数据我想要得到0值,并获得该行...

+0

你'WHERE'条件指定'DONE'和'ID用户= 2',但这些不匹配任何其他日期列。这是故意的还是什么? – 2013-02-14 04:37:20

+0

是的......我的问题如何返回带0values行时没有条件匹配 – user2070749 2013-02-14 04:49:05

回答

1

取出WHERE条件和更新SUM列仅总和,如果条件得到满足:

SUM(IF(status = 'DONE' AND idUser = '2', nominal + ongkir, 0)) 
+0

大这项工作..对不起我的坏...:d – user2070749 2013-02-14 04:58:28

+0

@ user2070749请编辑您的意见,使之不能全部大写字母(或只是删除它,不客气)。不要忘记也赞成很好的答案 – 2013-02-14 04:59:23

+0

嘿,我可以问你一个问题吗?如何在count(*)上使用它,我的意思是如果我将总数改为count()是否一样? – user2070749 2013-02-14 05:15:04