0

1 時間ごとのレコード (複数日にまたがる) を含むテーブルがあります。私がやりたいのは、毎日の最後の 1 時間ごとの記録を取得することです。

ここでMySQLソリューションを見つけました:各グループの最後のレコードを取得する(受け入れられた答えは私には良さそうで、多かれ少なかれ理にかなっています)

ただし、Railsで自己結合を行う方法が不明であるため、Railsファインダーでこれを実装するのに苦労しています(すべてのドキュメントが関連付けに適用されます)。

これまでのところ、私はこれを試しました...しかし、役に立ちませんでした(「id」列があいまいです)。

Report.joins("LEFT JOIN reports r2 ON (date('created_at') = date('r2.created_at') AND id < r2.id)").where("r2.id IS NULL")
4

1 に答える 1

3

おそらくreports、SQL でテーブルを明示的に参照する必要があるだけです。

Report.joins("LEFT JOIN reports r2 ON (date('reports.created_at') = date('r2.created_at') AND reports.id < r2.id)").where("r2.id IS NULL")

これを達成するためのより「Railsey」な方法については、finder_sqlオプションを見て、has_manyこれを行うための関連付けを作成することをお勧めします。

于 2012-04-20T13:58:48.323 に答える