DeadMorozBLR
Новичок
Помогите составить запрос
Здравствуйте
Есть таблица следующего вида
Нужно получить вот такой результат, т.е. для каждого из 'entry' получить количество
записей со статусом, равным 0, количество записей со статусом, равным 1 и общее количество
записей (фактически, сумма двух предыдущих полей).
У меня получилось нечто следующее:
Однако, результат - неверный для записей, у которых значение поля status_0
равно нулю (для entry = 2), т.к. одна запись из таблицы `mytbl` во втором запросе всё равно присоединяется.
Подскажите, пожалуйста, более правильное решение, и есть ли возможность получить такой результат в один
запрос (без использования временной таблицы).
Здравствуйте
Есть таблица следующего вида
Код:
+----+-------+--------+
| id | entry | status |
+----+-------+--------+
| 1 | 1 | 1 |
| 2 | 1 | 0 |
| 3 | 1 | 1 |
| 4 | 2 | 1 |
| 5 | 2 | 1 |
| 6 | 3 | 1 |
| 7 | 3 | 0 |
+----+-------+--------+
Нужно получить вот такой результат, т.е. для каждого из 'entry' получить количество
записей со статусом, равным 0, количество записей со статусом, равным 1 и общее количество
записей (фактически, сумма двух предыдущих полей).
Код:
+-------+----------+----------+-------+
| entry | status_0 | status_1 | total |
+-------+----------+----------+-------+
| 1 | 1 | 2 | 3 |
| 2 | 0 | 2 | 2 |
| 3 | 1 | 1 | 2 |
+-------+----------+----------+-------+
У меня получилось нечто следующее:
Код:
CREATE TEMPORARY TABLE `tmp`
SELECT `entry`,
COUNT(`entry`) AS `total`
FROM `mytbl`
GROUP BY `entry`;
SELECT `tmp`.`entry`,
COUNT(`tmp`.`entry`) AS `status_0`,
`total` - COUNT(`tmp`.`entry`) AS `status_1`,
`tmp`.`total`
FROM `tmp`
LEFT JOIN `mytbl`
ON `mytbl`.`entry` = `tmp`.`entry`
AND `mytbl`.`status` = 0
GROUP BY `tmp`.`entry`;
Однако, результат - неверный для записей, у которых значение поля status_0
равно нулю (для entry = 2), т.к. одна запись из таблицы `mytbl` во втором запросе всё равно присоединяется.
Код:
+-------+----------+----------+-------+
| entry | status_0 | status_1 | total |
+-------+----------+----------+-------+
| 1 | 1 | 2 | 3 |
| 2 | 1 | 1 | 2 |
| 3 | 1 | 1 | 2 |
+-------+----------+----------+-------+
Подскажите, пожалуйста, более правильное решение, и есть ли возможность получить такой результат в один
запрос (без использования временной таблицы).