从多个表中选择字段

时间:2013-09-20 01:10:23

标签: sql ruby-on-rails ruby ruby-on-rails-3 activerecord

除了使用execute方法之外,有没有办法在rails中编写此查询?

connection.execute("select value_1, value_2, value_3 from table1 join table2 on table2.table1_id = table1.id where table2.table3_id = table3_id_value")

1 个答案:

答案 0 :(得分:0)

如果你弯曲到Rails约定来复杂化和大写名称,那就容易多了。

然后,如果table1真的是foos而table2是bars,对应于Active Record FooBar,声明,那么你需要

belongs_to :foo

Bar记录中。这对应于外键foo_id。然后添加匹配

has_many :bars

Foo记录中。这样可以检索bars引用foo的所有foo.bars条记录Foo.join(:bar).select(:value_1, :value_2, :value_3) .where('bars.table3_id = ?, table3_id_value) 。完成所有这些后,查询将是

{{1}}

可以覆盖表和外键名称的默认约定。在the Active Record query documentation中查找正确的选项。