我在數據庫中使用了兩個表。 第一個包含與成功和失敗付款相關的數據,而第二個表包含有關服務狀態的數據。Mysql內部聯接查詢
查詢的結果應該將兩個表結合起來,結果列出按日期分組的成功和失敗付款以及按天分組的服務狀態。
第一個表的樣子:
id | charged | date
-----------------------------
8 | OK | 2011-12-03
7 | OK | 2011-12-03
9 | NO | 2011-12-03
11 | OK | 2011-12-04
14 | NO | 2011-12-04
第二個表是這樣的:
id | status | date
--------------------------
8 | 1 | 2011-12-03
9 | 1 | 2011-12-03
11 | 0 | 2011-12-04
12 | 0 | 2011-12-04
14 | 1 | 2011-12-04
正確的查詢結果應該是:
date | not_charged | charged | status_1 | status_0
-----------------------------------------------------------
2011-12-04 | 1 | 1 | 1 | 2
2011-12-03 | 1 | 2 | 2 | 0
,我試過查詢看起來像這樣:
SELECT i.date, SUM(
CASE WHEN i.charged = 'NO'
THEN 1 ELSE 0 END) AS not_charged, SUM(
CASE WHEN i.charged = 'OK'
THEN 1 ELSE 0 END) AS charged, SUM(
CASE WHEN s.status = '1'
THEN 1 ELSE 0 END) AS status_1, SUM(
CASE WHEN s.status = '0' THEN 1 ELSE 0 END) AS status_0
FROM charge i INNER JOIN status s ON s.date = i.date
GROUP BY i.date
,但我得到錯誤的結果看起來像這樣
date | not_charged | charged | status_1 | status_0
---------------------------------------------------------
2011-12-04 | 3 | 3 | 2 | 4
2011-12-03 | 2 | 4 | 6 | 0
我在做什麼錯了,我怎樣才能得到正確的結果?
感謝您的所有建議。
+1:如果記錄不需要與他們的ID相關,最簡潔的選項。 – MatBailie 2011-12-20 17:38:14