Ruby onRails2.3.5を使用してSQLiteデータベースから一連のモデルを受け取っています。現在、本当に必要なものだけを選択するためにサブクエリを使用しています。
find(:all,
:conditions => "foo.id in (
SELECT bar.foo_id FROM bar
JOIN baz
ON baz.bar_id = bar.id
WHERE baz.bla in (1, 2, 3)
)"
)
サブクエリはすべての行に対して同じ結果を評価し、SQLiteは最適化できることに気付くほど賢くないので、これはばかげていることを私は知っています。だから私はそれをクエリから外したいと思います。2番目を使用してRailsから簡単に呼び出すことができることは知っていfind()
ますが、サブクエリの戻り値が比較的大きくなる可能性があることを考えると、データベース内のすべてを実行したいので、データベースとRails。
では、モデルを実行してfind()
、実際のサブクエリの戻り値を検索し、その結果を他の行の比較に使用する必要があることをどのように伝えることができますか?find()
これをSQLiteへの1回の呼び出しで渡すことはできますか?