2011-07-13 54 views
1

任何人都知道如何使用ActiveRecord而不是使用SQL創建此查詢?ActiveRecord查詢

@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;"); 
+0

您的ActiveRecord連接將會到特定的數據庫。在運行查詢之前,您需要連接到'DBName'(通過在database.yml中指定正確的參數)。 – Ben

回答

1

......怎麼

@leaderboard = Event.select([:name,:street,:town,:county,'avg(volume_used) as avg_used']).joins(:households).group('events.household_id').order('volume_used asc') 

把由idhouseholds你實際上意味着households.id以及您希望通過您選擇的合計平均場訂購。

+0

感謝Ben,試過了,它給了我不正確的平均值和它的下降記錄。還有其他建議嗎? – user676567

+0

你可以發佈你的表格定義嗎? – Ben

+0

create_table:events do | t | \t \t t.integer:ID \t \t t.datetime:START_TIME \t \t t.datetime:END_TIME \t \t t.float:volume_used \t \t t.integer:inferred_appliance_id \t \t t.integer:household_id \t \t t.timestamps end – user676567