GROUP BY с отчетливым и счетным для активной записи (Rails) - PullRequest
0 голосов
/ 13 февраля 2012

Использование: Rails 2.3.8 ruby ​​1.8.7

Как преобразовать следующий запрос в Rails (Active-Record)

MYSQL

SELECT distinct source_code, count(source_code)
FROM table
GROUP BY 1

Возвращает =>

| source_code | count |
| ABC         | 16    |
| XYZ         | 2     |

Попытка Rails

Model.find(:all, :select => "distinct source_code, count(source_code)", 
                 :group => 1)

=> [Model source_code: "ABC">, Model source_code: "XYZ">]

Как видите, в наборе результатов отсутствует счетчик.

1 Ответ

2 голосов
/ 13 февраля 2012

Для вашего оператора SQL не требуется предложение DISTINCT, поскольку предложение GROUP BY будет возвращать различные sourcecode строки.

В рельсах 2.3.x вы можете получить желаемый результат следующим образом:

Model.count(:group => :source_code)

# returns an ordered hash
{
  "ABC" => 16,
  "XYZ" => 2
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...