首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按创建日期排序,然后使用拇指向上进行最高投票。

按创建日期排序,然后使用拇指向上进行最高投票。
EN

Stack Overflow用户
提问于 2014-09-28 11:20:29
回答 1查看 90关注 0票数 0

我正试着先按日期将帖子(称为主题)分组,这样最新的帖子就会排在首位。在那之后,我想在上面显示对那个日期的最高投票。

这是我的控制器: topics_controller.rb

代码语言:javascript
复制
@topics = Topic.tally.group(created_at: :desc).order('vote_count')

但我的输出是这样的,

我要显示第28条、第27条、然后第26条。我在这里做错什么了?

更新:这是一个我希望我的帖子页面看起来的示例。

9月28日邮报5,10投4,7投

9月27日邮报3,17投2票,15投

9月26日邮报1,26

EN

回答 1

Stack Overflow用户

发布于 2014-09-28 17:26:04

SQL的GROUP (AKA group with ActiveRecord)并不像您认为的那样。你说:

我正试着先按日期将帖子(称为主题)分组,这样最新的帖子就会排在首位。

但是您不使用GROUP BY对事物进行排序,而是使用GROUP BY对行进行分组,从而使聚合操作(例如countsumavg、.)可以折叠分组行以生成某种类型的摘要。

如果你想订购商品,那就订购它们:

代码语言:javascript
复制
@topics = Topic.tally.order('created_at desc, vote_count asc')

当然,由于您的created_at时间戳可能是唯一的(或者几乎是唯一的),因此vote_count实际上将被忽略,因为不会有任何需要中断的created_at联系。您说要按日期排序,但是created_at是时间戳(即日期和日期)。如果确实希望按日期排序,那么将created_at转换为日期:

代码语言:javascript
复制
@topics = Topic.tally.order('cast(created_at as date) desc, vote_count asc')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26084353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档