【问题标题】:get a list of cities from location model and how many locations exist for each city从位置模型中获取城市列表以及每个城市存在多少个位置
【发布时间】:2013-06-01 04:57:27
【问题描述】:

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

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

我希望能够输出类似的东西

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

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

cities = Location.uniq.pluck(:city)

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

有没有更好的方法来做到这一点?

【问题讨论】:

  • 这是用于分面导航吗?
  • @MarkThomas 可能是,我仍在研究想法。

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


【解决方案1】:
Location.group(:city).count

这将为您提供一个以城市为键、值作为计数的哈希

【讨论】:

    【解决方案2】:

    你应该使用 GROUP BY insted

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

    【讨论】:

    • 我对 Rails 比较陌生,有没有办法通过这个 ActiveRecord 来做。
    • 我只知道 SQL,但看起来 Vimsha 有上述查询的 Rails 版本
    • 是的,你是对的,你的 SQL 是完美的。我与 Rails 的主要战斗是将 SQL 转换为 ActiveRecord :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-21
    相关资源
    最近更新 更多