簡體   English   中英

這個查詢我在做什么錯?

[英]What am I doing wrong with this query?

目標:獲得每位用戶最少次數正確回答的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

現在,在軌道上,我得到了:

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"}]

可能很重要:大多數記錄的“ count”都以NULL結尾。 如果尚未回答,我似乎無法為他們設置0。

但是,就rails問題而言:我猜這是由於:condition。 我究竟做錯了什么? 提前致謝!

如果要在Question模型上調用find方法,那么questions.id可能會在查詢中應用於問題表,而不是上面編寫的內部查詢中(因此無效)。

您的rails代碼生成的SQL是什么? 您應該能夠在rails日志中看到它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM