我正在构建一个Rails 5应用程序。 在这个应用程序中,我得到了一个查询,获得最喜欢的前五个想法。这个查询给了我一个零赞的想法。我想只获得至少一个像这样的想法。我怎样才能改变它?
Idea.joins("LEFT OUTER JOIN Likes ON likes.likable_id = ideas.id").group("ideas.id").order("COUNT(likes.id) DESC").take(5)
感谢所有帮助
更新
这似乎有效
Idea.joins("INNER JOIN Likes ON likes.likable_id = ideas.id").group("ideas.id").order("COUNT(likes.id) DESC").take(5)
答案 0 :(得分:2)
您应该使用INNER JOIN代替LEFT OUTER JOIN。通过这种方式,您只能获得至少有1个相似的构思,并避免使用其他where子句。
Idea.joins(:likes).group("ideas.id").order("COUNT(likes.id) DESC").take(5)
Rails joins方法默认情况下INNER JOIN
INNER JOIN选择两个表中具有匹配值的记录, wheFT LEFT OUTER JOIN关键字返回左表中的所有记录 (table1),以及右表(table2)中匹配的记录。该 如果没有匹配,则结果从右侧为NULL。