Ruby on rails ActiveRecord查询
有人知道我如何使用ActiveRecord而不是SQL创建此查询吗Ruby on rails ActiveRecord查询,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,有人知道我如何使用ActiveRecord而不是SQL创建此查询吗 @leaderboard = ActiveRecord::Base.connection.execute("SELECT name, street, town, county, avg(volume_used) FROM `DBName`.`events join DBName.households on idhouseholds = events.household_id group by household
@leaderboard = ActiveRecord::Base.connection.execute("SELECT name, street, town, county, avg(volume_used) FROM `DBName`.`events
join DBName.households on idhouseholds = events.household_id
group by household_id
order by volume_used ASC;");
那么
@leaderboard = Event.select([:name,:street,:town,:county,'avg(volume_used) as avg_used']).joins(:households).group('events.household_id').order('volume_used asc')
假设您所说的idhouses
实际上指的是houses.id
,并且您希望按照您选择的聚合平均值字段进行排序。那么
@leaderboard = Event.select([:name,:street,:town,:county,'avg(volume_used) as avg_used']).joins(:households).group('events.household_id').order('volume_used asc')
假设您所说的
idhouses
实际上是指houses.id
,并且您希望按所选的聚合平均值字段进行排序。您的ActiveRecord连接将连接到特定的数据库。在运行查询之前,您需要连接到DBName
(通过在database.yml中指定正确的参数)。ActiveRecord将连接到特定的数据库。在运行查询之前,您需要连接到DBName
(通过在database.yml中指定正确的参数)。感谢Ben,他尝试了这一点,并给出了错误的平均值和删除记录。还有其他建议吗?你能发布你的表定义吗?创建表:事件do | t | t.integer:id t.datetime:start | t.datetime:end | t.float:volume | used t.integer:推断的家电id t.integer:家用id t.timestamps endcreate |表:家用do | t | t.string:名称t.string:数字t.string:街道t.string:城镇t.string:县城谢谢。我已经更新了答案中的代码(order和group子句不太正确)-尝试一下。谢谢Ben,尝试了,它给了我错误的平均值和下降记录。还有其他建议吗?你能发布你的表定义吗?创建表:事件do | t | t.integer:id t.datetime:start | t.datetime:end | t.float:volume | used t.integer:推断的家电id t.integer:家用id t.timestamps endcreate |表:家用do | t | t.string:名称t.string:数字t.string:街道t.string:城镇t.string:县城谢谢。我已经更新了答案中的代码(order和group子句不太正确)-试试看。