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 回答