我不了解Rails
请问,如何在Rails中进行此查询?
SELECT *, count(v.id) numero_votos FROM ideas i left join votes v on v.idea_id = i.id group by i.id order by numero_votos desc, i.created_at
我试过了......
@listOfIdeas = Idea.find(:all, joins: "LEFT JOIN 'votes' on votes.idea_id = ideas.id",
select: "ideas.*, count(votes.id) numero_de_votos",
group: "ideas.id",
order: "numero_de_votos DESC, ideas.created_at DESC")
但是,没有工作,它向我展示了这个信息:
无法找到所有想法' :(全部,{:加入=>" LEFT JOIN'投票'对投票.idea_id = ideas .id",:select =>" ideas。*,count(votes.id)numero_de_votos",:group =>" ideas.id",:order =&gt ;" numero_de_votos DESC,ideas.created_at DESC"})(找到0结果,但正在寻找2)
Rails版本:5.1.4
谢谢!
答案 0 :(得分:1)
您的SQL查询看起来很奇怪。如果您的SQL查询是:
SELECT i.*, count(v.id) AS numero_votos
FROM ideas i
LEFT JOIN votes v ON v.idea_id = i.id
GROUP BY i.id
ORDER BY numero_votos DESC, i.created_at
然后,你应该尝试一下:
Idea.select("ideas.*, count(votes.id) AS numero_votos ")
.joins("LEFT JOIN votes ON votes.idea_id = ideas.id")
.group("ideas.id")
.order("numero_votos DESC")
.order("ideas.created_at")