2012-12-24 30 views
2

在ActiveRecord的,最好不用字面SQL,我试图让粗略这是怎么回事:在同一领域多个子查询用ActiveRecord

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

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

注:我在每个子查询

选择从链接表中的不同专栏中,我已经尝试过这样的:

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

还要注意的子查询的本质意味着我不能将我的AND放入一个子查询中

任何方式在ActiveRecord中执行此操作而不使用SQL?

我使用的Rails 3和PostgreSQL

谢谢!

回答

1

你可能会更好地链接两个条件,然后结合它们。

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

这将增加两个IN查询之间的AND

+0

感谢您的回答,但这不起作用 - 请参阅我也在每个子查询中选择不同的链接列。我会更新问题 – whalabi

+0

@whalabi我更新了我的答案,这个解决方案是否仍然不能解决您的问题,如果不是,您可以解释为什么 –

+0

这确实看起来工作。谢谢! – whalabi