2010-08-23 22 views
0

如何計算「組」查詢返回的結果數量而不獲取數據?到目前爲止,我只是得到一個結果的哈希表。在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 
+0

你到底在想什麼?具有屬性question_id和user_id的投票總數,其中question_id = 3?不確定我瞭解您的查詢。 – Trip 2010-08-23 18:10:07

+0

我想對一個小組做一個簡單的計數,但是現在我得到的數據非常可靠,我必須再次進行計數才能獲得針對特定問題投票的用戶數量。我在做一個組,因爲我可以有多個用戶可以回答的問題。 – Gros 2010-10-28 10:06:20

回答

1

您可以使用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})") 
+0

解決方法工作正常。在我對mysql版本的測試中,我還不得不命名錶:'(count)(*)from(#{query})mycount' – Gros 2011-09-06 15:27:07