MySQL запрос для подсчета голосов - PullRequest
0 голосов
/ 03 марта 2011

У меня есть таблица со следующими столбцами: user_id, ключ, значение и флаг.SELECT, FROM, WHERE, GROUP BY и ORDER BY работают сами, как и ожидалось.Когда я пытаюсь добавить ключ в таблицу, я получаю сообщение об ошибке для проверки моего синтаксиса.Ключ - это вопрос, а ценность - ответы.Я хочу получить результат, который показывает все вопросы со всеми возможными ответами и подсчет того, как часто этот ответ встречался.

SELECT value AS 'Answer', count(*) AS 'Total Votes'
FROM survey_data sd
INNER JOIN (SELECT key FROM sd GROUP BY key) T1 ON T1.key = sd.key
WHERE flag != 1
GROUP BY value
ORDER BY 'Total Votes' DESC

Что мне здесь не хватает?

В качестве примечания, когдаЯ выполняю этот запрос без ВНУТРЕННЕГО СОЕДИНЕНИЯ, результат не упорядочен DESC по «Всего голосов» - кто-нибудь знает, почему или в чем проблема?

Спасибо, Райан

Ответы [ 2 ]

7 голосов
/ 03 марта 2011

ключ - зарезервированное слово.

http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html

, поместите его в кавычки (alt + 96) или переименуйте ваше поле

edit.Если вы используете псевдоним с более чем одним словом, вы также должны использовать backtick.Поэтому измените ваш заказ по пункту в порядке

на total votes desc без кавычек

Поставьте галочку до и после общего количества голосов.Я не вижу их в своем посте или даже лучше изменить псевдоним поля одним словом.

0 голосов
/ 03 марта 2011

Я парень по MSSQL, поэтому не уверен, поможет ли это, но попробуйте использовать полные столбцы, например.table.column

SELECT sd.value AS 'Answer', count(sd.*) AS 'Total Votes'
FROM survey_data sd
INNER JOIN (SELECT sd.key FROM sd GROUP BY sd.key) T1 ON T1.key = sd.key
WHERE sd.flag != 1
GROUP BY sd.value
ORDER BY 'Total Votes' DESC
...