2013-11-20 36 views
0

我有以下結構/數據:如何在ActiveRecord的一個叫計數和不同的選擇這一點

global_id | list_type_id 
4    2 
11    2 
4    2 
4    2 
7    2 
7    2 

和想要做的事,如:

GlobalList.select(:global_id).distinct.where('list_type_id=?',2).count('each_global_id') 

具有以下global_lists :

global_id:4, each_global_id:3 
global_id:7, each_global_id:2 
global_id:11, each_global_id:1 

但是AR Query顯然不起作用。任何想法如何做到這一點,並獲得計數的命名值?

THX

回答

0
GlobalList.where(:list_type_id => 2).group(:global_id).count 

這會給你鑰匙作爲global_is和值作爲計數的哈希值。類似下面爲您例如

{4 => 3, 7 => 2, 11 => 1} 

更新:

可以重建結果散列成你想要的格式。

{4 => 3, 7 => 2, 11 => 1}.collect{|key, value|{:global_id => key, :each_global_id => value}} 

會給你

[{:global_id=>4, :each_global_id=>3}, {:global_id=>7, :each_global_id=>2}, {:global_id=>11, :each_global_id=>1}] 
+0

什麼辦法可以指定結果散列的鑰匙?需要採用當前的方法。 – timpone

+0

更新了我的答案。我希望這是你期待的格式 – usha

相關問題