2012-12-24 34 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