添加查询加入查询的位置

时间:2017-12-20 22:26:15

标签: ruby-on-rails

我正在构建一个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)

1 个答案:

答案 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。