Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.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
Mysql 无法选择按处创建的\u分组的行_Mysql_Ruby On Rails_Activerecord_Rails Activerecord - Fatal编程技术网

Mysql 无法选择按处创建的\u分组的行

Mysql 无法选择按处创建的\u分组的行,mysql,ruby-on-rails,activerecord,rails-activerecord,Mysql,Ruby On Rails,Activerecord,Rails Activerecord,我有一张桌子: +----+----------------------+---------------------+ | id | implemented_features | created_at | +----+----------------------+---------------------+ | 1 | 19 | 2013-07-18 04:10:12 | | 2 | 6 | 2013

我有一张桌子:

+----+----------------------+---------------------+
| id | implemented_features | created_at          |
+----+----------------------+---------------------+
|  1 |                   19 | 2013-07-18 04:10:12 |
|  2 |                    6 | 2013-07-18 04:10:12 |
|  3 |                   26 | 2013-07-19 04:10:12 |
|  4 |                   11 | 2013-07-19 04:10:12 |
|  5 |                    1 | 2013-07-20 04:10:12 |
+----+----------------------+---------------------+
当我通过MySQL直接查询时,它可以完美地满足我的需要

select date(created_at) as date, sum(implemented_features) as sum from summaries group by date(created_at);
但当我尝试将此查询转换为ActiveRecord语法时,它会返回nil

2.0.0p0 :035 > Summary.select("date(created_at) as date, sum(implemented_features)").group("date(created_at)")
  Summary Load (0.5ms)  SELECT date(created_at) as date, sum(implemented_features) FROM `summaries` GROUP BY date(created_at)
 => #<ActiveRecord::Relation [#<Summary id: nil>]> 
如您所见,两个示例中的最终查询都是相同的。 为什么它在ActiveRecord中不起作用


在我的Rails项目中使用Rails 4.0.0、Ruby 2.0、mysql db。

我想你只是对控制台输出有点困惑

你是这么说的:

Summary.select("date(created_at) as date, sum(implemented_features)")...
因此,封装在ActiveRecord::Relation中的返回摘要实例没有任何常见的摘要属性:没有id、没有创建的、没有实现的等等。当您调用ActiveRecord对象上的inspect时,它希望向您显示对象内部的内容,这意味着它希望向您显示包含的数据库属性;您的摘要实例没有任何常规属性,因此您会看到类似的情况

不用担心,你选择的价值观确实存在。如果你说:

Summary.select(...).map(&:date)

您应该将datecreated_视为日期值。如果为sumimplemented_功能添加别名,则可以使用该别名作为方法名称来提取总和。

我不熟悉ActiveRecord,但可能需要像在常规SQL查询中那样为sumimplemented_功能提供别名。您说这不起作用,但没有包括它的工作原理。你有错误吗?什么错误?您是否得到错误的结果?是否需要在活动记录的查询中包含id?Summary.selectid,datecreated\u at as date,…没关系,我现在明白你的意思了。为你写一个答案:@henrikhodne请看上面的代码。我得到了@Mike,不,我不需要来自其他行的id。我试过你的例子。得到