0

RailsのActiveRecordで次のクエリを作成しようとしています。

SELECT * FROM test_run WHERE build = '$build' AND suite='$suite'AND (result = 'fail' OR     result = 'error') 
    AND test_name NOT IN(SELECT test_name FROM test_run WHERE result = 'pass' AND   build  = '$build')GROUP BY test_name";

最初の部分は簡単ですが、サブクエリの実行方法がわかりません。

scope :never_passed, lambda { |b| where(:build => b, :status => 'fail').where(??)

このサブクエリを上記のSQLとして機能させるために何をする必要があるかについてのアイデアはありますか?

ありがとう

4

1 に答える 1

1

Arel のおかげで、次のようなサブクエリを実行できます。

TestRun.where(:test_name => TestRun.where('result != ? && build != ?','pass','somevalue').select('test_name')).to_sql

次の SQL が出力されます。

SELECT `test_runs`.* FROM `test_runs` WHERE `test_runs`.`test_name` IN ('test1','test2')
于 2012-08-07T07:33:26.130 に答える