2013-01-21 81 views
2

我有種感覺這已被問過,但我一直在尋找,但不能得出一個明確的描述。通過日期範圍內的給定日期的項目迭代軌道

我有一個軌道應用程序,其中包含特定日期(如生日)上發生的項目。現在我想創建一個視圖來創建一個表格(或其他的東西,divs都是正確的),指定一個日期一次,然後逐個迭代相關項目。

項目有一個日期字段,當然,與單獨的表或其他東西的日期無關。

我當然可以查詢數據庫〜30次(因爲我想要一個月的項目表示),但我認爲它看起來很醜並且會是大量重複的。我想結果看起來像這樣(有兩列暫且認爲這是桌子):

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

所以我想我需要知道兩件事情:如何構建一個正確的查詢(但它可能這是簡單的Item.where("date > ? < ?", lower_bound, upper_bound))以及如何將它翻譯成視圖

我也想過一個關鍵每個單獨的日期和值的數組,但我必須構造像上面(重複),我期望是不是很優雅。

使用GROUP BY似乎沒有得到任何東西diffe與其他查詢相比,租金(當然還包括項目的分組除外)。只是一些對象,但我可能做錯了。

對不起,如果這是一個基本的問題。我對這個領域比較陌生(通常是編程)。

回答

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) 
+0

我能夠使用組構造一個SQL查詢,都與軌道,並通過直接SQL。這給了我一個對象數組,我可以把它稱爲合理的方法(如在SQL查詢中給出的)。但是,我將如何將它翻譯成一個視圖?我似乎無法弄清楚我可以做什麼來遍歷個別組或其他東西。 – Kobes

+0

如果您有對象,請將它們保存在實例變量中,因爲所有實例變量都可以在視圖中自動使用。您可以像在任何其他數組中那樣在視圖中進行迭代。 – tadman

+0

我知道這一點,但對我來說重點是我想要一個單一的查詢,但是對於兩個層次的迭代(除非這是不必要的)。我會稍微更新我的問題,以使目標更清晰。 – Kobes