0

これを実現するためにaを使用することもできますがfind_by_sql、可能であればRailsの方法で実行したいと思います。

私のSQLクエリは次のようになります。

SELECT regions.id, max(updated_at) FROM demographics 
JOIN regions ON (regions.id = demographics.region_id) 
JOIN region_stats ON (region_stats.region_id = regions.id) 
WHERE region_stats.income_level = 1    
GROUP BY demographics.region_id;

これをきれいにRailsに変換する方法はありますか?

4

2 に答える 2

1
Demographic.find(:all,
  :conditions=>[
    "region_stats.income_level = ?",
    1
  ],
  :joins=>"as demographics JOIN regions ON (regions.id = demographics.region_id) JOIN region_stats ON (region_stats.region_id = regions.id)",
  :group=>"demographics.region_id",
  :select=>"regions.id, demographics.max(updated_at)"
)
于 2012-10-10T20:39:45.550 に答える
1

未テスト:

Demographic.joins(:region => [:region_stats]).select('demographics.region_id, max(demographics.updated_at) as `max_date`').where(:region_stats => {:income_level => 1}).group('demographics.region_id')
于 2012-10-10T20:49:28.463 に答える