Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.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
Sql 查询中的ActiveRecord聚合属性_Sql_Ruby On Rails_Ruby On Rails 3_Activerecord - Fatal编程技术网

Sql 查询中的ActiveRecord聚合属性

Sql 查询中的ActiveRecord聚合属性,sql,ruby-on-rails,ruby-on-rails-3,activerecord,Sql,Ruby On Rails,Ruby On Rails 3,Activerecord,我尝试使用ActiveRecord和Rails 3执行如下查询: select count(*), * from messages group by thread_id 我正在尝试构建一个简单的线程消息系统的收件箱。此查询的目的是将所有消息对象折叠为每个线程最近的一个,并检索线程的大小 或者,我可以只检索每个线程的所有顶级消息(只需删除计数(*),然后将计数作为每组消息的单独查询来执行,但这似乎效率极低 有人有什么想法吗?在ActiveRecord中是否有这样做的方法?要让rails(3)生成

我尝试使用ActiveRecord和Rails 3执行如下查询:

select count(*), * from messages group by thread_id
我正在尝试构建一个简单的线程消息系统的收件箱。此查询的目的是将所有消息对象折叠为每个线程最近的一个,并检索线程的大小

或者,我可以只检索每个线程的所有顶级消息(只需删除计数(*),然后将计数作为每组消息的单独查询来执行,但这似乎效率极低

有人有什么想法吗?在ActiveRecord中是否有这样做的方法?

要让rails(3)生成所需的查询,请尝试:

Message.select('count(*) as thread_size, *').group(:thread_id)
线程中的消息数将作为返回的消息记录的
thread\u size
属性提供

如果您发现随着数据库变大,此查询开始变慢,您可能需要查看Rails的
计数器缓存
功能(请参阅)