Результат подсчета Mysql с нулевым значением - PullRequest
4 голосов
/ 21 ноября 2011

В mysql я получил таблицу "показателей" следующим образом

Id  Date                Name        score
1   2011-08-24 00:00:00 sharique    10
2   2011-08-24 00:00:00 joe     11
3   2011-08-24 00:00:00 vijay       5
4   2011-08-25 00:00:00 sharique    0
5   2011-08-25 00:00:00 joe    11

Теперь, когда я выполняю запрос

SELECT date,count(id) as count FROM scores where `name` = 'vijay' group by `date`;

Я получаю результат как

date                 count
2011-08-24 00:00:00,  1

вместо

date                 count
2011-08-24 00:00:00,  1
2011-08-25 00:00:00,  0

как я могу отобразить результат с нулевым счетом, пожалуйста?

Ответы [ 2 ]

9 голосов
/ 21 ноября 2011

Вот один простой способ:

SELECT s2.date, count(s1.id) as count
FROM (select distinct `date` from scores) s2 
  left join scores s1
    on  s1.`date` = s2.`date`
    and s1.`name` = 'vijay'
group by 1

Это гарантирует дату для всех для каждой отдельной даты в таблице

0 голосов
/ 21 ноября 2011

Это ожидаемый результат при подсчете количества строк, соответствующих вашему условию where.

SELECT date,count(id) as count FROM scores where `name` = 'vijay' group by `date`;

Он выбирает только одну запись, следовательно, результат подсчета равен 1.

Если вы хотите сосчитать все используемые строки, не ограничивайте данные с помощью Where Clause например: -

SELECT date,count(id) as count FROM scores group by `date`;

Аналогично, следующий запрос вернет 3 в качестве числа ..

SELECT date,count(id) as count FROM scores where id in (1,2,3) group by `date`;
...