Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 将where查询添加到JOIN查询_Ruby On Rails - Fatal编程技术网

Ruby on rails 将where查询添加到JOIN查询

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

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