Я использую две таблицы в базе данных. Первый содержит данные, относящиеся к успешным и неуспешным платежам, а во второй таблице приведены данные о статусе услуг.Запрос внутреннего соединения 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: Самый краткий вариант, если записи не нуждаются в их идентификаторах. – MatBailie