Я хочу выбрать количество пользователей, которые отметили некоторый контент как избранный, а также вернуться, если текущий пользователь «проголосовал» или нет. Моя таблица выглядит следующим образомSELECT CASE, COUNT (*)
CREATE TABLE IF NOT EXISTS `favorites` (
`user` int(11) NOT NULL DEFAULT '0',
`content` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`user`,`content`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ;
Say У меня есть 3 строки, содержащие
INSERT INTO `favorites` (`user`, `content`) VALUES
(11, 26977),
(22, 26977),
(33, 26977);
Используя этот
SELECT COUNT(*), CASE
WHEN user='22'
THEN 1
ELSE 0
END as has_voted
FROM favorites WHERE content = '26977'
я ожидаю получить has_voted=1
и COUNT(*)=3
но
я получаю has_voted=0
и COUNT(*)=3
. Почему это? Как это исправить?
Это хороший пример использования функции MySQL, чтобы получить логические выражения результатов. Очень хорошее решение проблемы. Ваш ответ был бы замечательным, если бы вы не только дали рабочее решение, но и объяснили ошибку дакера. Мой голос, хотя, для лучшего решения, на мой взгляд. –
@ThorstenKettner Вас приветствует ... –