Nav*_*ave 7 sql ruby-on-rails find
我希望使用find在rails控制器中编写此SQL查询:
select id,name from questions
where id not in (select question_id from levels_questions where level_id=15)
Run Code Online (Sandbox Code Playgroud)
我该怎么做?我正在使用Rails框架和MySQL.提前致谢.
jos*_*hng 28
Question.find_all_by_sql('select id,name from questions where id not in (select question_id from levels_questions where level_id=15)')
Run Code Online (Sandbox Code Playgroud)
这无疑是非ActiveRecord-ish,但我发现使用AR宏时,诸如此类的复杂查询往往不够清晰/高效.如果您已经构建了SQL,那么您也可以使用它.
一些建议:将此查找调用封装在INSIDE Question类中的方法中,以隐藏控制器/视图中的详细信息,并考虑可能更高效的其他SQL结构(例如,其中levels_questions.question_id为null的OUTER JOIN)
Rya*_*roi 21
简单方法:
ids = LevelsQuestion.all(:select => "question_id",
:conditions => "level_id = 15").collect(&:question_id)
Question.all(:select => "id, name", :conditions => ["id not in (?)", ids])
Run Code Online (Sandbox Code Playgroud)
一枪:
Question.all(:select => "id, name",
:conditions => ["id not in (select question_id from levels_questions where level_id=15)"])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22015 次 |
| 最近记录: |