я следующий SQL-запрос (написан другим человеком):2 Количество в одном запросе
select q.id, q.text, v.id, count(v.id) as voteCount
from survey as s
join sessions as ss on ss.session_state='FINISHED' and ss.survey=s.id
join answer as a on a.sessionId=ss.id
join answer_item as a_i on a_i.answer=a.id
join question_variant as v on v.id=a_i.question_variant_id
join question as q on q.id=v.question_id
where s.id=9
group by q.id, v.id order by q.id, voteCount desc
Он выводит стат данные из обследований. 9 - только для теста. voteCount
возвращает сколько раз для каждого вопроса был выбран вариант ответа. Он отлично работает:
q.id q.text v.id voteCount comment for voteCount
10 blahblah 5 2 2 is two times (5 and 5) for question 10
10 blahblah 4 1 1 is one time (4) for question 10
10 blahblah 2 1 1 is one time (2) for question 10
10 blahblah 5 2 2 is two time (5 and 5) for question 10
11 foobarfoo 5 1 1 is one time (5) for question 11
Теперь я хочу изменить запрос, чтобы иметь еще один столбец, в результате, равный тому, сколько раз этот вопрос был дан ответ.
q.id q.text v.id voteCount totalCount comment for totalCount
10 blahblah 5 2 4 4 is four times question 10 is answered
10 blahblah 4 1 4 4 is four times question 10 is answered
10 blahblah 2 1 4 4 is four times question 10 is answered
10 blahblah 5 2 4 4 is four times question 10 is answered
11 foobarfoo 5 1 1 1 is one time question 11 is answered
Я попытался это:
select q.id, q.text, v.id, count(v.id) as voteCount, count(q.id) as totalCount
from survey as s
join sessions as ss on ss.session_state='FINISHED' and ss.survey=s.id
join answer as a on a.sessionId=ss.id
join answer_item as a_i on a_i.answer=a.id
join question_variant as v on v.id=a_i.question_variant_id
join question as q on q.id=v.question_id
where s.id=9
group by q.id, v.id order by q.id, voteCount desc
Но удивительно обе колонки содержат одинаковое значение!
q.id q.text v.id voteCount totalCount comment for totalCount
10 blahblah 5 2 2 ???
10 blahblah 4 1 1 ???
10 blahblah 2 1 1 ???
10 blahblah 5 2 2 ???
11 foobarfoo 5 1 1 ???
Зачем и как исправить это?