2010-02-17 6 views
0

настоящее время у меня следующий запросРубин на Rails запрос Помощь

User.sum(:experience, :group => "clan", :conditions => ["created_at >= ? and created_at <= ?", "2010-02-15", "2010-02-16"]) 

Я хочу вернуть 50 лучших кланов с точки зрения опыта, перечисленных из наиболее опыта наименее опыт работы с только верхний 50 в опыте возвращения. Как мне изменить запрос для достижения этого результата. Я знаю, что мне нужно: limit => 50, чтобы ограничить запрос, но если я добавлю: order => «clan DESC», я получаю столбец ошибок «users.experience» должен появиться в предложении GROUP BY или использоваться в агрегированном функция

+1

на основе этого запроса ActiveRecord, похоже, вы агрегирование пользователей, чтобы найти общий опыт каждого клана заказанного самым опытным наименее. Это верно? Возможно, было бы полезно указать, что вы подразумеваете под «результатами» - если вы хотите, чтобы метод sum не был тем, что вы хотите. –

+0

tomtoday - это правильно, и я обновил исходный вопрос, чтобы отразить это. Что я должен использовать для замены .sum? – Splashlin

ответ

0

Вам нужно повторить расчет в пункте порядка

User.sum(:experience, :group => "clan", :order=> "sum(experience) DESC", :limit => 50, :conditions => ["created_at >= ? and created_at <= ?", "2010-02-15", "2010-02-16"]) 
+0

Это не работает? Я пытаюсь убедиться, что у меня нет ошибки в моей логике ... – naven87

Смежные вопросы