проблема с использованием агрегатных функций с объединением нескольких таблиц - PullRequest
0 голосов
/ 24 июля 2010

Моя цель - создать агрегатную функцию (сумму) и сгруппировать элементы, но есть ошибка

это все шаги, которые я сделал

1- первый шаг код

SELECT ca.question_id , ca.choice_0 ,ca.choice_1 ,ca.choice_2 ,ca.choice_3 ,ca.choice_4 ,q.headline_id  FROM closed_answers ca
                INNER JOIN questions q ON ca.question_id = q.id 
                INNER JOIN headline h ON q.headline_id = h.id
                INNER JOIN forms f ON h.form_id = f.id
                WHERE f.id = 2

результат

http://img717.imageshack.us/img717/685/firststep.png


2 - теперь я хочу объединить варианты и сгруппировать их по идентификатору заголовка, но когда я пишу

SELECT sum(ca.choice_0) ,sum(ca.choice_1) ,sum(ca.choice_2) ,sum(ca.choice_3) ,sum(ca.choice_4) ,q.headline_id  FROM closed_answers ca

                INNER JOIN questions q ON ca.question_id = q.id 
                INNER JOIN headline h ON q.headline_id = h.id
                INNER JOIN forms f ON h.form_id = f.id
                GROUP BY q.headline_id
                WHERE f.id = 2

ошибка

A Database Error Occurred

Error Number: 1064

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE f.id = 2' at line 6

SELECT sum(ca.choice_0) ,sum(ca.choice_1) ,sum(ca.choice_2) ,sum(ca.choice_3) ,sum(ca.choice_4) ,q.headline_id FROM closed_answers ca INNER JOIN questions q ON ca.question_id = q.id INNER JOIN headline h ON q.headline_id = h.id INNER JOIN forms f ON h.form_id = f.id GROUP BY q.headline_id WHERE f.id = 2

PS: работает, когда я удаляю группу по ключевому слову и суммирую все варианты

http://img203.imageshack.us/img203/8186/secondstepx.png

1 Ответ

6 голосов
/ 24 июля 2010

Поставьте GROUP BY после WHERE.

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