选择结果,其中连接表包含具有属性的记录,但没有其他记录

时间:2015-06-08 17:38:56

标签: ruby-on-rails postgresql activerecord

Example.joins(another: :things).where(examples: {status: 'active'}, things: {status: 'required'}).where.not(things: {status: 'unwanted'})

上面查询的结果是否与" where.not"相同。

事情可能有不同的状态:'必需','不需要的'和许多其他人。我必须获取包含至少一个带有' required'状态,但排除包含一个或多个“不需要的”的记录。状态。

有任何帮助吗?谢谢!

1 个答案:

答案 0 :(得分:0)

我可以想到使用2个查询来解决这个问题。在这种情况下,Rails form会有所帮助。

another_ids = Example.from(Another.join(:things)
                     .group(:status)
                     .where(status: [ 'required', 'indifferent'])
                     .select('status, distinct anothers.id as another_id'), :x)
                     .pluck("x.another_id")

然后,

Example.where(another_id: another_ids).all

以下是导致此答案的chat对话。