Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails ActiveRecord查询_Ruby On Rails_Activerecord - Fatal编程技术网

Ruby on rails ActiveRecord查询

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

有人知道我如何使用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_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子句不太正确)-试试看。