从位置模型获取城市列表以及每个城市存在多少个位置

时间:2013-05-31 20:18:57

标签: mysql ruby-on-rails ruby ruby-on-rails-3

我有一个位置模型,其中包含几列:标题,地址,城市,州等......

我正在尝试根据数据库中的位置显示所有城市的列表。然后,我想弄清楚每个城市有多少个地方。

我希望能够输出类似

的内容
Tampa(10) 
Denver(20)
Atlanta(15)
... and so on

目前,为了获取数据库中的城市列表,我使用以下代码:

cities = Location.uniq.pluck(:city)

从技术上讲,我可以循环遍历所有城市并执行COUNT(*)WHERE city =“cityname”......但这似乎是一种非常低效的方法。

有没有更好的方法来实现这一目标?

2 个答案:

答案 0 :(得分:1)

你应该使用GROUP BY insted

SELECT city, COUNT(*) FROM locations GROUP BY city;

答案 1 :(得分:1)

Location.group(:city).count

这将为您提供一个哈希,其中city为键,值为count