2010-10-16 67 views
0

目標:獲得N的列表隨機已經被正確回答的問題最少的次數,每個用戶。我在做這個查詢有什麼問題?

下面的SQL將我提供具有正確回答問題的計數的列表USER_ID 4.

select q.id, temp.Count 
from questions as q 
left join 
(select q.id, count(a.id) as count 
from questions as q 
left join attempts as a 
on a.question_id = q.id 
where a.correct = true and a.user_id = 4 
group by q.id) 
temp on temp.id = q.id 
order by count desc 

現在,在軌,Ive得到:

c = Question.find :all, 
:joins => "LEFT JOIN attempts ON attempts.question_id = questions.id", 
:select => "questions.id, count(attempts.id)", 
:group => "questions.id", 
:conditions => ["attempts.correct = true AND attempts.user_id = ?", @user.id] 

但是,這會給我只有1條記錄的列表,而不是我在psql控制檯中使用的43條記錄。

輸出:

c = Question.find :all, :joins => "LEFT JOIN attempts ON attempts.question_id = questions.id", :select => "questions.id, count(attempts.id)", :group => "questions.id", :conditions => "attempts.correct = true AND attempts.user_id = 4" 
=> [#<Question id: 112>] 

輸出,而不:條件:

b 
=> [{"id"=>"69", "count"=>nil}, {"id"=>"70", "count"=>nil}, {"id"=>"71", "count"=>nil}, {"id"=>"72", "count"=>nil}, {"id"=>"73", "count"=>nil}, {"id"=>"74", "count"=>nil}, {"id"=>"75", "count"=>nil}, {"id"=>"76", "count"=>nil}, {"id"=>"77", "count"=>nil}, {"id"=>"78", "count"=>nil}, {"id"=>"80", "count"=>nil}, {"id"=>"81", "count"=>nil}, {"id"=>"82", "count"=>nil}, {"id"=>"83", "count"=>nil}, {"id"=>"84", "count"=>nil}, {"id"=>"85", "count"=>nil}, {"id"=>"86", "count"=>nil}, {"id"=>"87", "count"=>nil}, {"id"=>"88", "count"=>nil}, {"id"=>"89", "count"=>nil}, {"id"=>"90", "count"=>nil}, {"id"=>"91", "count"=>nil}, {"id"=>"92", "count"=>nil}, {"id"=>"93", "count"=>nil}, {"id"=>"94", "count"=>nil}, {"id"=>"95", "count"=>nil}, {"id"=>"96", "count"=>nil}, {"id"=>"97", "count"=>nil}, {"id"=>"98", "count"=>nil}, {"id"=>"99", "count"=>nil}, {"id"=>"100", "count"=>nil}, {"id"=>"101", "count"=>nil}, {"id"=>"102", "count"=>nil}, {"id"=>"103", "count"=>nil}, {"id"=>"104", "count"=>nil}, {"id"=>"105", "count"=>nil}, {"id"=>"106", "count"=>nil}, {"id"=>"107", "count"=>nil}, {"id"=>"108", "count"=>nil}, {"id"=>"109", "count"=>nil}, {"id"=>"110", "count"=>nil}, {"id"=>"111", "count"=>nil}, {"id"=>"112", "count"=>"2"}] 

也許重要的是:大多數的記錄結束了NULL爲 '計數'。如果他們還沒有被回答,我似乎無法爲他們設置一個0。

但是,至於軌道問題:我想這是因爲:條件。我究竟做錯了什麼?提前致謝!

回答

1

如果您在Question模型上調用查找方法,那麼questions.id組可能會在查詢中應用於問題表,而不是您在上面寫入的內部查詢中(因此不起作用) 。

什麼是您的rails代碼生成的sql?你應該能夠在你的rails日誌中看到這個。