【发布时间】:2017-07-19 21:36:45
【问题描述】:
在我的 Ruby on Rails 应用程序中,我有以下模型:
class SlideGroup < ApplicationRecord
has_many :survey_group_lists, foreign_key: 'group_id'
has_many :surveys, through: :survey_group_lists
end
我想查找所有孤立的幻灯片组。孤立幻灯片组是未连接到任何调查的幻灯片组。我一直在尝试以下查询,但它没有返回任何内容,我确定我的测试数据库中有孤立记录:
SlideGroup.joins(:surveys).group("slide_groups.id, surveys.id").having("count(surveys.id) = ?",0)
这会生成以下 sql 查询:
SlideGroup Load (9.3ms) SELECT "slide_groups".* FROM "slide_groups" INNER JOIN "survey_group_lists" ON "survey_group_lists"."group_id" = "slide_groups"."id" INNER JOIN "surveys" ON "surveys"."id" = "survey_group_lists"."survey_id" GROUP BY slide_groups.id, surveys.id HAVING (count(surveys.id) = 0)
【问题讨论】:
-
这里需要
outer join,因为inner join不会返回孤儿。
标签: ruby-on-rails ruby postgresql activerecord