Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在rails环境中,sql count语句按多列分组_Sql_Ruby On Rails - Fatal编程技术网

在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