2010-11-19 50 views
0

我遇到了一些我不知道如何處理活動記錄(實際上我不能確切地說如何使用sql),我想這樣做。我想根據某個領域的最高價值以及其他一些標準來選擇記錄。下面是一些假的東西,這解釋了我的情況。鑑於以下記錄:with activerecord我如何根據字段的最高值選擇記錄?

id:1 | name:recipe1 | saved:true | revision:1 
id:2 | name:recipe1 | saved:false | revision:2 
id:3 | name:recipe1 | saved:true | revision:3 
id:4 | name:recipe1 | saved:false | revision:4 
id:5 | name:recipe2 | saved:true | revision:1 
id:6 | name:recipe2 | saved:true | revision:2 
id:7 | name:recipe3 | saved:false | revision:1 
id:8 | name:recipe4 | saved:true | revision:1 

我希望能夠獲得最高版本號的記錄已被保存。這將意味着記錄與ID:3,6和8

我的第一本能是做某種類型的子查詢,在修訂或某事上獲得一個MAX。除此之外,我真的不知道如何去做,所以任何幫助將不勝感激。

編輯:

這是做什麼,我想要的SQL:

SELECT id, name, MAX(revision) as "revision" FROM revisions WHERE saved = 1 GROUP BY name 

現在,有任何合理的方式與ActiveRecord的做到這一點?

回答

4
Revision.maximum(:revision,:conditions => ["saved=1"],:group => 'name') 
+0

此函數返回的ID和最高版本(如:{33 => 4}),它幾乎存在,但有什麼辦法讓它要返回記錄? – re5et 2010-11-19 07:41:13

+0

Revision.find(:all,:select =>「id,name,max(revision)as revision」,:conditions => [「saved = 1」],:group =>'name') – Rakesh 2010-11-19 07:48:30

+0

完全工作= ) – re5et 2010-11-19 08:16:54

相關問題