2015-04-17 73 views
0

我的模式是這樣的:的Rails在GROUP_BY查詢額外列

Product belongs_to Category 
Product belongs_to OrderItem 

我想選擇的某一天銷售的產品總價值,由Categorylike這個分組:

@items = OrderItem.joins(:product => [:category]).where('order_items.sale_date = ?', 1.day.ago.strftime('%Y-%m-%d')).group(:'categories.name').sum(:total_value) 

查詢工作正常,返回一個包含類別名稱和總值的數組。

我在結果中需要一些額外的列,如類別的Id。我怎樣才能做到這一點?

感謝

+0

嘗試'組(」 ','categories.id')' –

+0

現在有列,但我不能在視圖中用'item.id'訪問它 –

+0

在這個查詢之後,'@ items'應該包含'Ha sh',其中每個鍵是數組'[category_name,category_id]',並且該值是相應的'sum'。 –

回答

1

請嘗試以下方法獲取類別和相應數額的數組:

@items = OrderItem.joins(:product => [:category]).where('order_items.sale_date = ?', 
1.day.ago.strftime('%Y-%m-%d')).group('categories.id'). 
sum(:total_value).map {|k, v| {category: Category.find(k), total_value: v}} 

現在你可以使用類似的觀點:

<% @items.each do |item| %> 
<p><%= item[:category].name %> - <%= item[:total_value] %></p> 
<% end; %>