Ruby: сгруппировать и подсчитать количество результатов - PullRequest
0 голосов
/ 23 августа 2010

Как подсчитать количество результатов, возвращаемых «групповым» запросом без получения данных?Пока что я просто получаю хеш-таблицу результатов.Возможно ли в rails3 оптимизировать этот запрос?

Vote.group("question_id, user_id").where("question_id = 3").count.count
 => 2

В этом случае мы выполняем подсчет этой хеш-таблицы => {1=>10, 15=>1}

Запрос:

SELECT COUNT(*) AS count_all, question_id, user_id AS question_id_user_id
FROM `votes`
WHERE (question_id = 3)
GROUP BY question_id, user_id

1 Ответ

1 голос
/ 16 февраля 2011

Вы можете использовать count_by_sql:

Vote.count_by_sql("select count(*) from ( select 1 from Votes group by question_id, user_id )")

Или вы можете создать запрос с помощью Rails, а затем запустить его:

 query = Vote.group(:question_id, :user_id).to_sql
 count = Vote.count_by_sql("select count(*) from ( #{query} )")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...