Ruby on rails 将where查询添加到JOIN查询
我正在构建一个Rails 5应用程序。 在这个应用程序中,我得到了一个查询,其中列出了最受欢迎的五大创意。这个查询也给了我零喜欢的想法。我只想得到至少一个这样的想法。我怎样才能改变它Ruby on rails 将where查询添加到JOIN查询,ruby-on-rails,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
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个like的想法,并避免额外的where子句
Idea.joins(:likes).group("ideas.id").order("COUNT(likes.id) DESC").take(5)
Rails方法默认情况下不进行内部联接
内部联接选择两个表中具有匹配值的记录,
其中LEFT-OUTER-JOIN关键字返回左表中的所有记录
(表1),以及右表(表2)中的匹配记录。这个
如果不匹配,则右侧的结果为空
你应该使用而不是。这样,您将只得到至少有1个like的想法,并避免额外的where子句
Idea.joins(:likes).group("ideas.id").order("COUNT(likes.id) DESC").take(5)
Rails方法默认情况下不进行内部联接
内部联接选择两个表中具有匹配值的记录,
其中LEFT-OUTER-JOIN关键字返回左表中的所有记录
(表1),以及右表(表2)中的匹配记录。这个
如果不匹配,则右侧的结果为空
您是否尝试过使用
内部联接
而不是左侧外部联接
。这样,你只会得到至少有一个喜欢的想法,并避免额外的条款工作!为什么工作?内部联接
选择两个表中具有匹配值的记录,其中左外部联接
关键字返回左表(表1)中的所有记录,以及右表(表2)中的匹配记录。如果不匹配,则右侧的结果为空。是否尝试使用内部联接
而不是左侧外部联接
。这样,你只会得到至少有一个喜欢的想法,并避免额外的条款工作!为什么工作?内部联接
选择两个表中具有匹配值的记录,其中左外部联接
关键字返回左表(表1)中的所有记录,以及右表(表2)中的匹配记录。如果没有匹配项,则结果从右侧为NULL。