2

以前に聞いたことがあるような気がしますが、探していたのですが、明確に説明できません。

特定の日付(誕生日など)に発生するアイテムを保持するRailsアプリがあります。ここで、指定された日付を1回記述し、関連するアイテムを1つずつ繰り返すテーブル(または他の何か、divも大丈夫です)を作成するビューを作成したいと思います。

アイテムには日付フィールドがあり、もちろん、別のテーブルなどの日付とは関係ありません。

もちろん、データベースに最大30回クエリを実行できます(1か月分のアイテムの表現が必要なため)が、見た目が醜く、非常に繰り返しになると思います。結果を次のようにしたいと思います(当面は2列のテーブルと考えてください)。

Jan/1 | jan1.item1.desc
      | jan1.item2.desc
      | jan1.item3.desc
Jan/2 | jan2.item1.desc
      | etc.

Item.where("date > ? < ?", lower_bound, upper_bound))したがって、正しいクエリを作成する方法と、それをビューに変換する方法の2つを知る必要があると思います。

また、個々の日のキーと値の配列を使用したハッシュについても考えましたが、上記のように(繰り返し)、あまりエレガントではないことを期待して構築する必要があります。

を使用GROUP BYしても、他のクエリとは異なるものは何もありません(もちろん、アイテムのグループ化は別として)。オブジェクトの配列だけですが、これは間違っている可能性があります。

基本的な質問でしたらごめんなさい。私はこの分野(およびプログラミング全般)に比較的慣れていません。

4

1 に答える 1

1

カレンダーを作成している場合は、おそらくGROUP BY日付を記入する必要があります。

SELECT COUNT(*) AS instances, DATE(`date`) AS on_date FROM items GROUP BY DATE(`date`)

これは、列が文字通りと呼ばれていることを前提としています。これはdate、SQLの予約語であるため、おそらく悪い考えです。その場合は、MySQL表記で「」を使用して、使用するたびにそれを回避する必要があります。Postgresなどは異なるアプローチを使用しています。

範囲内のインスタンスの場合、必要なのはおそらくBETWEEN演算子です。

@items = Item.where("`date` BETWEEN ? AND ?", lower_bound, upper_bound)
于 2013-01-21T19:15:31.470 に答える