Считать пройденные логины и неудачные логины в одном запросе? - PullRequest
1 голос
/ 04 августа 2011

У меня есть запрос, в котором выбираются 5 самых популярных UID.
Я показываю такие результаты:
«Имя» подключено 457 раз, не удалось 124 раза

Мой фактический запрос получит только 457 раз, я не знаю, как выбрать неудачные входы в тот же запрос У меня есть поле в моей базе данных с именем «пройдено». Значение равно 0, если не удалось, 1, если правильно.

Текущий запрос:

SELECT uid, COUNT(uid) AS cnt
FROM logins
GROUP BY uid
ORDER BY cnt DESC 
LIMIT 5

Структура базы данных:

CREATE TABLE IF NOT EXISTS `logins` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `uid` int(11) NOT NULL,
  `username` varchar(255) NOT NULL,
  `ip` varchar(15) NOT NULL,
  `time` int(10) NOT NULL,
  `passed` int(1) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1544 ;

Не могли бы вы помочь мне разобраться с этим?
Заранее спасибо

Ответы [ 2 ]

3 голосов
/ 04 августа 2011
SELECT uid, COUNT(uid) AS cnt, COUNT( IF( passed = 0, 1, NULL ) ) AS failed
FROM logins
GROUP BY uid
ORDER BY cnt DESC 
LIMIT 5
0 голосов
/ 04 августа 2011
SELECT uid, COUNT(uid) AS cnt, (SELECT COUNT(uid) FROM logins WHERE passed=0) AS failed ...

Вы можете использовать внутренний оператор выбора для достижения этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...