在rails环境中,sql count语句按多列分组
我有两个亲戚(班级) 我明白了 我的目标是在返回结果中同时获得在rails环境中,sql count语句按多列分组,sql,ruby-on-rails,Sql,Ruby On Rails,我有两个亲戚(班级) 我明白了 我的目标是在返回结果中同时获得RecommendTypeFor的id和name。目前我只能让它返回id或name。像这样的 {{"id" => 1, "name" => "dinner", "count" => 1}, {"id" =>2, "name" => "lunch", "count" => 3} } 当然,我可以在获得id或名称后再执行一轮sql来创建该哈希,但我认为这不是有效的方法。感谢您的帮助或建议:)我相信如
RecommendTypeFor
的id
和name
。目前我只能让它返回id
或name
。像这样的
{{"id" => 1, "name" => "dinner", "count" => 1}, {"id" =>2, "name" => "lunch", "count" => 3} }
当然,我可以在获得id或名称后再执行一轮sql来创建该哈希,但我认为这不是有效的方法。感谢您的帮助或建议:)我相信如果您删除
,请在结尾处计数,并将选择更改为:
.select("count(*), recommended_for_type_id, recommended_for_types.name")
您将获得一个模型数组,其中包含您需要的属性和计数
您应该能够通过执行以下操作在控制台中对其进行测试:
r = RecommendedForTypeRestaurant.where(restaurant_id: rest_id)
@result = r.includes(:recommended_for_type)
.select("recommended_for_type_id, recommended_for_types.name, count(*)")
.group ("recommended_tor_type_id, recommended_for_types.name")
@result.each do |r|
puts r.recommended_for_type_id
puts r.name
puts r.count
end
希望有帮助 您需要单独分组,请尝试以下分组
.group ("recommended_tor_type_id", "recommended_for_types.name").count
但它似乎真的很慢。
{{"id" => 1, "name" => "dinner", "count" => 1}, {"id" =>2, "name" => "lunch", "count" => 3} }
.select("count(*), recommended_for_type_id, recommended_for_types.name")
r = RecommendedForTypeRestaurant.where(restaurant_id: rest_id)
@result = r.includes(:recommended_for_type)
.select("recommended_for_type_id, recommended_for_types.name, count(*)")
.group ("recommended_tor_type_id, recommended_for_types.name")
@result.each do |r|
puts r.recommended_for_type_id
puts r.name
puts r.count
end
.group ("recommended_tor_type_id", "recommended_for_types.name").count