2017-02-27 61 views
0

私のアプリでは、特定の日付の売上レポートを保存できます。私が今やりたいのは、データベースにクエリを出し、最新のセールスレポート(テーブルに最大の日付を持つレポート)だけを選択することです。Rails:日付を最大にするレコードを選択

すべてのレポートを日付別に並べ替える方法と、最も日付の高いレポートを選択する方法はわかっていますが、最も日付の高い複数のレポートを取得する方法はわかりません。

どうすれば実現できますか?私はPostgresを使用しています。

答えて

6

これは何か?

SalesReport.where(date: SalesReport.maximum('date')) 

EDIT:

SalesReport.where(date: SalesReport.select('MAX(date)')) 

の場合:はちょうどあなたが次の形式を使用して、(副選択を持つ)単一のクエリに2つのクエリを減らすことができ、以下の@ muistooshortさんのコメントへの可視性をもたらすためにWebホストとデータベースホストの間には多くの遅延があり、実行時間が半減する可能性があります。それはほとんどの場合、常に好ましい形式です。あなたが最大の日付が一致するレポートを検索するために取得することができます

+0

それです!完璧!ありがとう! – Oliver

+2

'SalesReport.where(:date => SalesReport.select( 'max(date)'))' ActiveRecordは2つのクエリの代わりにサブクエリを使用します。おそらくこのような場合には心配する価値はありません。 –

+0

@muistooshort良い点。私は私の答えを更新しました – aidan

1

max_date = Report.maximum('date') 
reports = Report.where(date: max_date) 
関連する問題