Sql 从多个表中选择字段
除了使用execute方法之外,还有其他方法在rails中编写此查询吗Sql 从多个表中选择字段,sql,ruby-on-rails,ruby,ruby-on-rails-3,activerecord,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") 如果你遵从Rails关于名字复数和大写的惯例,那就容易多了 然后,如果表1是真正的foos,表2是与活动记录Foo和Bar
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")
如果你遵从Rails关于名字复数和大写的惯例,那就容易多了 然后,如果表1是真正的
foos
,表2是与活动记录Foo
和Bar
相对应的Bar
,那么您需要
belongs_to :foo
在栏中
记录。这对应于外键foo\u id
。然后添加匹配项
has_many :bars
在Foo
记录中。这允许检索使用foo.bar
引用foo
的所有bar
记录。所有这些就绪后,查询将
Foo.join(:bar).select(:value_1, :value_2, :value_3)
.where('bars.table3_id = ?, table3_id_value)
可以覆盖表名和外键名的默认约定。在中查找正确的选项。如果您按照Rails的惯例将名称复数化和大写,则更容易 然后,如果表1是真正的
foos
,表2是与活动记录Foo
和Bar
相对应的Bar
,那么您需要
belongs_to :foo
在栏中
记录。这对应于外键foo\u id
。然后添加匹配项
has_many :bars
在Foo
记录中。这允许检索使用foo.bar
引用foo
的所有bar
记录。所有这些就绪后,查询将
Foo.join(:bar).select(:value_1, :value_2, :value_3)
.where('bars.table3_id = ?, table3_id_value)
可以覆盖表名和外键名的默认约定。在中查找正确的选项。谢谢您的提示!因此,我只是运行了您建议的一个稍微修改的版本(必须在select值周围添加括号,并在“bar”中添加一个“s”),并且只返回了三个select值中的两个(其中一个不是来自Foo)。有什么想法吗?活动记录联接界面不允许访问联接记录的字段。你必须使用一个较低级别的电话。谢谢你的提示!因此,我只是运行了您建议的一个稍微修改的版本(必须在select值周围添加括号,并在“bar”中添加一个“s”),并且只返回了三个select值中的两个(其中一个不是来自Foo)。有什么想法吗?活动记录联接界面不允许访问联接记录的字段。您必须使用一个较低级别的呼叫。