2016-02-28 2 views
0

Я хочу знать, сколько пользователь вводит логин и насколько они не могут и не добились успеха.MySQL: подсчитывать строки с условным значением

Столбец категории - это varchar (глупость ex-программиста), а значение только 1 или 0.

Если 1 успех, если 0 означает отказ.

$loginForced = " SELECT 
        Count(categori) AS login,      
        Count(CASE WHEN categori = '1' THEN categori ELSE 0 END) AS success,       
        Count(CASE WHEN categori = '0' THEN categori ELSE 0 END) AS fail       
       FROM 
        log 
       WHERE email = '".$personal."' "; 
+0

изменения условного количества условной '' sum' SUM (случай, когда .... ' –

+0

Я пробовал, но результат странно – klaudia

+0

В этом случае вам нужно предоставить некоторые примеры данных и ожидаемый результат. –

ответ

1

Вы, вероятно, хотите т просто пропустить ELSE в выражении CASE:

SELECT Count(categori) AS login,      
     Count(CASE WHEN categori = '1' THEN categori END) AS success,       
     Count(CASE WHEN categori = '0' THEN categori END) AS fail       
FROM log 
WHERE email = '".$personal."' "; 

COUNT учитывает всех значения ненулевых, поэтому использование ELSE 0 по существу бессмысленно, так как 0 происходит чтобы считаться так же, как и любое другое значение.

+0

Моя ошибка установить else условие. Спасибо, в любом случае. : D – klaudia

3

Использование sum с условием:.

$loginForced = "select count(`categori`) as `login`,      
         sum(`categori` = '1') as `success`,       
         sum(`categori` = '0') as `fail`       
       from `log` 
       where `email` = '".$personal."' "; 
+4

Я просто отмечаю, что этот ответ делает (очень разумное) предположение, что 'categori' никогда не является' NULL'. –

Смежные вопросы