2

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

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

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

注意:我从每个子查询的链接表中选择不同的列

我已经尝试过这个:

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

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

有什么方法可以在 ActiveRecord 中做到这一点而不求助于 SQL?

我正在使用 Rails 3 和 PostgreSQL

谢谢!

4

1 回答 1

1

您最好将两个 where 条件链接起来,然后将它们组合起来。

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

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

于 2012-12-24T03:53:41.960 回答