具有activerecord的同一字段上的多个子查询

时间:2012-12-24 03:39:38

标签: ruby-on-rails activerecord subquery

在activerecord中,最好没有文字sql,我试图大致这样做:

Thing.where(:id => Link.select(:col1).where(subquery1), :id => Link.select(:col2).where(subquery2))

我需要它在子查询之间给我一个AND,而不是最后一个子查询覆盖前面的子查询。

注意:我在每个子查询中的Link表中选择了一个不同的列

我已经尝试过了:

t = Thing.where(:id => Link.where(subquery1))
t.where(:id => Link.where(subquery2))

另请注意,子查询的性质意味着我不能将我的AND放入单个子查询

任何方法在ActiveRecord中执行此操作而不诉诸SQL?

我正在使用Rails 3和PostgreSQL

谢谢!

1 个答案:

答案 0 :(得分:1)

你可能最好将两个条件链接起来然后将它们组合起来。

Thing.where(:id => Link.select(:col1).where(subquery1)).where(:id => Link.select(:col2).where(subquery2))

这将在两个AND查询之间添加IN