2009-08-06 22 views
12

i emptype_id ve calendar_id actual_head ile bütçeleri tablo var ben ne zamanraylar grup

estimated_head Budgets.sum(:actual_head ,:group=>"emptype_id,calendar_id") benim yaptığım yukarıdaki iki sütunla ama sadece emptype_id

ancak zaman göre gruplandırılmış bir sonuç alamadım i sql sorgusu

SELECT sum(`budgets`.actual_head) AS sum_actual_head, emptype_id,calendar_id AS emptype_id_calendar_id FROM `budgets` GROUP BY emptype_id,calendar_id 

Ben yinelemenize istedim 103 satır

sahiptir haklı log kontrol true_head toplamını almak için her bir emptype_id ve calendar_id ile ilgili bazı hesaplamalar yapın. Ben bundan emin değilim

cevap

3

, raylar tarafından desteklenen edilemez birden çok sütun ile gruplandırma :group => [:emptype_id, :calendar_id]

+0

merhaba, çalışmıyor aşağıdaki hatayı atar; Mysql :: Hata: hmm iki sütun "ActiveRecord :: StatementInvalid tarafından gruba yolu yoktur 'alan listesinde' yer 'emptype_idcalendar_id' Bilinmeyen sütun: SEÇ toplamı OLARAK sum_actual_head (' bütçe s'.actual_head), emptype_idcalendar_id AS emptype_idcalendar_id FROM 'Bütçeler' GRUBU BY boşluk_idya lendar_id " – philipth

+2

Bu, Rails 3.0.x:" Evaluation.average (: score,: group => [: person_id,: category]) 'ile benim için çalışır. –

+0

Bir hata yayacaktır. Bu kod aktif kayıt kullanmak rayların daha yeni sürümleri (> = 3.2) için emptype_idcalendar_id –

10

denemek satın. Düzenli olarak bulmak zorundasınız:

budgets = Budgets.find(:all, 
         :select => "emptype_id, calendar_id, sum(budgets.actual_head) AS sum_actual_head", 
         :group => "emptype_id, calendar_id") 

budgets.each { |budget| puts budget.sum_actual_head } 
+1

gibi tek bir kelime olarak bu sütun adı ayrıştırmak olacak çalıştırırsanız 'Budgets.select ("sum_actual_head OLARAK emptype_id, calendar_id, toplamı (budgets.actual_head)") .group ("emptype_id, calendar_id") 'dır çünkü yalnızca ids ile çalışır. – amoebe

5

Hile yapıyorum. :group => ["emptype_id,calendar_id"].

İstediğinizi istemiyorum, ama bu en azından çalışır.