рельсы 3: лучший запрос SQL для списка + подсчитать все существующие значения поля? - PullRequest
0 голосов
/ 10 мая 2011

Существует ли запрос SQL для рельсов 3 / активных записей, который выполняет большую часть / всю работу по заполнению массива или хэша всеми значениями (и счетчиками), содержащимися в поле?

Например,список (и количество) всех названий городов, в которых находятся клиенты:

Если customer.city содержит Даллас, Париж, Чикаго, Даллас, Хьюстон, Даллас, Париж

Мне нужно создатьlist

chicago 1
dallas 3
houston 1
paris 2

Конечно, это легко сделать с помощью итерации, но я думаю, что есть способ выполнить большую часть / всю работу в хорошем запросе SQL?

Ответы [ 3 ]

2 голосов
/ 10 мая 2011

Я в замешательстве ... ты это имеешь в виду?

Customer.group('city').count
1 голос
/ 10 мая 2011
SELECT city_name, count(city_name) FROM customers GROUP BY city_name
0 голосов
/ 10 мая 2011

def dup_hash<br> inject(Hash.new(0)) { |h,e| h[e] += 1; h }.select {<br> |k,v| v > 0 }.inject({}) { |r, e| r[e.first] = e.last; r }<br> end<br> puts customer.city.dup_hash

Вы можете попробовать это в irb.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...