Rails 3:列出最佳 SQL 查询计算一个字段的所有现有值?
Rails 3/活动记录是否有一个 SQL 查询可以完成大部分/所有工作,用字段包含的所有值(和计数)填充数组或散列?
例如,客户所在的所有城市名称的列表(和计数):
如果 customer.city 包含 dallas, paris, Chicago, dallas, houston, dallas, paris
我需要生成列表
chicago 1
dallas 3
houston 1
paris 2
当然这很容易做到通过迭代,但我认为有一种方法可以在良好的 SQL 查询中完成大部分/所有工作?
Is there a SQL query for rails 3/active records that does most/all the work to fill an array or hash with all the values (and counts) that a field contains?
For example, a list (and count) of all the city names that customers are in:
If customer.city contains dallas, paris, chicago, dallas, houston, dallas, paris
I need to generate the list
chicago 1
dallas 3
houston 1
paris 2
Of course it's easy to do it by iterating, but I'm thinking there's a way to most/all the work in a good SQL query?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我一头雾水……你的意思是这样吗?
I'm confused... do you mean like this?
<代码>
def dup_hash
注入(Hash.new(0)) { |h,e| h[e] += 1; h }.select {
|k,v| v> 0 }.inject({}) { |r, e| r[e.first] = e.last; r }
结束
放置 customer.city.dup_hash
你可以在 irb 中尝试一下。
def dup_hash
inject(Hash.new(0)) { |h,e| h[e] += 1; h }.select {
|k,v| v > 0 }.inject({}) { |r, e| r[e.first] = e.last; r }
end
puts customer.city.dup_hash
You can try this in irb.