我使用ruby 1.9.3
和ruby-datamapper與postgresql
。我有一張滿桌的桌子,每桌有三個屬性:id
,text
和created_at
。最後一個是Date
對象。如何獲取ruby DataMapper :: Collection的所有不同屬性值?
在我的應用程序I SELECT
一些條目像這樣:collection = Entry.all(:text => /SomeRegexp/)
。我現在想知道發生在返回的DataMapper::Collection
中的所有不同的值created_at
。我想到了以下兩種方法:
遍歷
DataMapper::Collection
並收集所有日期。dates = Array.new Entry.all(:text => /SomeRegexp/).each { |entry| dates.include?(entry.date) ? next : dates = dates << entry.date }
優點:
- 它應該工作
缺點:
- 它是巨大的緩慢數據的坐騎
- 它應該工作
請求數據庫每天的條目,並收集日期,其中collection =零
dates = Array.new for date in DatabaseStartDate..Date.today Entry.all(:created_at => date, :text => /SomeRegexp/).empty? ? next : dates = dates << date) end
優點:
- 應該比快上面的例子,尤其是對於大量數據
缺點:
- 許多數據庫查詢
- 應該比快上面的例子,尤其是對於大量數據
注意:上面的代碼是未經測試的僞代碼,它應該只是給讀者一個粗略的想法真正的代碼應該做什麼,所以它不太可能工作。如果您需要更詳細的示例隨時發表評論,我會嘗試更好地解釋它!
下一條通知:如果您在僞代碼中發現錯誤,請告訴我,以便我可以更快開始! ;)
所以最後我的問題是:我應該更喜歡哪種解決方案或有更好的一個沒有進入我的腦海?
像那些表達非常感謝你!你忘了'DISTINCT',但這個想法真棒! :d –