【发布时间】:2019-01-25 00:37:51
【问题描述】:
我已加入多个表来构建我的记录,如下所示,但现在我想返回未分配给term_year_id 301 的唯一标准(即我想返回standard_id 1 and 4)。
id standard_id term_id term_year_id
1 1 200 300
2 2 200 300
3 2 201 301
4 3 202 300
我试图返回不等于term_year_id 301 的记录,但那会返回我不想要的standard 2。我也尝试过 group/have 但我的语法错误?
def school_standards
@standards = @school.achievement_standards
.joins("LEFT OUTER JOIN term_standards ON achievement_standards.id = term_standards.achievement_standard_id")
.joins("LEFT OUTER JOIN terms ON terms.id = term_standards.term_id")
.group("terms.term_year_id")
.having("terms.term_year_id <> 301)
end
这样做的正确方法是什么?我正在使用带有 postgres 的 Rails。
【问题讨论】:
-
哦!您想返回所有不包括 term_year_id 301 的标准 ID。您可能需要告诉我们您使用的是哪个数据库。
-
但我不想返回
standard_id 2,因为它在term_year_id 300 and 301中 -
我正在使用带有 rails 的 postgres
-
那么我认为你要做的是一个 group().having() ,你的 group by 进入一个数组,而你的 having 不包括 301。stackoverflow.com/questions/10928210/postgresql-aggregate-array postgresql.org/docs/9.1/functions-array.html跨度>
-
对连接表进行分组的语法是什么?我收到
column must appear in GROUP BY clause之类的错误。注意:我将代码添加到问题中
标签: sql ruby-on-rails