2011-06-24 62 views
3

組I具有有兩個屬性(我顯示只有兩個因爲只有那些兩列需要)最大在由有源記錄查詢

爲MyModel


place_id模型----- ------------------- user_id

1 ------------------------- --------- 1

1 ---------------------------------- 2

1 ---------------------------------- 2

3 ------ ---------------------------- 3

3 ---------------- ------------------ 2

3 -------------------------- -------- 3

3 ---------------------------------- 1

我想按最大記錄獲取組。基本上我想爲某個特定的地方獲取最多記錄,例如place_id 1用戶2獲得最大結果,而3用戶3獲得最大結果。

回答

5

如果您指定的地方首先,你可以這樣做:

MyModel.where("place_id=?",place_id). 
     group("place_id,user_id").order("count(user_id) DESC").first 

如果你想獲得一次所有的最大值,然後刪除where子句,並通過你的結果集迭代,只取第一條記錄爲每個不同的place_id。或者你可以在上面的語句中添加一個獨特的。像這樣?

MyModel.select("DISTINCT(place_id)"). 
     merge(MyModel.group("place_id,user_id").order("count(user_id) DESC")) 

祝你好運!