私のアプリでは、特定の日付の売上レポートを保存できます。私が今やりたいのは、データベースにクエリを出し、最新のセールスレポート(テーブルに最大の日付を持つレポート)だけを選択することです。Rails:日付を最大にするレコードを選択
すべてのレポートを日付別に並べ替える方法と、最も日付の高いレポートを選択する方法はわかっていますが、最も日付の高い複数のレポートを取得する方法はわかりません。
どうすれば実現できますか?私はPostgresを使用しています。
私のアプリでは、特定の日付の売上レポートを保存できます。私が今やりたいのは、データベースにクエリを出し、最新のセールスレポート(テーブルに最大の日付を持つレポート)だけを選択することです。Rails:日付を最大にするレコードを選択
すべてのレポートを日付別に並べ替える方法と、最も日付の高いレポートを選択する方法はわかっていますが、最も日付の高い複数のレポートを取得する方法はわかりません。
どうすれば実現できますか?私はPostgresを使用しています。
これは何か?
SalesReport.where(date: SalesReport.maximum('date'))
EDIT:
SalesReport.where(date: SalesReport.select('MAX(date)'))
の場合:はちょうどあなたが次の形式を使用して、(副選択を持つ)単一のクエリに2つのクエリを減らすことができ、以下の@ muistooshortさんのコメントへの可視性をもたらすためにWebホストとデータベースホストの間には多くの遅延があり、実行時間が半減する可能性があります。それはほとんどの場合、常に好ましい形式です。あなたが最大の日付が一致するレポートを検索するために取得することができます
:
max_date = Report.maximum('date')
reports = Report.where(date: max_date)
それです!完璧!ありがとう! – Oliver
'SalesReport.where(:date => SalesReport.select( 'max(date)'))' ActiveRecordは2つのクエリの代わりにサブクエリを使用します。おそらくこのような場合には心配する価値はありません。 –
@muistooshort良い点。私は私の答えを更新しました – aidan