mysql - Rails:按频率列出项目,包括频率
问题描述
以下每个类别将获得一个帖子:
Post.group(:category_id).order('count *')
然后,我可以通过列出每个结果来显示代表帖子的表格,每个类别一个:
CATEGORY | SAMPLE POST ID | SAMPLE POST TITLE
1 | 123 | How to swim out loud
2 | 246 | On Hamlet
但是,我想包括此类别中的帖子数,例如:
CATEGORY | AMOUNT | SAMPLE POST ID | SAMPLE POST TITLE
1 | 5 | 123 | How to swim out loud
2 | 2 | 246 | On Hamlet
我们怎样才能显示数量,即“每组计数”?希望有一种方法可以从“发布”结果中提取它作为适当的 ActiveRecord 查询的一部分。
请注意,这里没有“类别”表。category_id 只是一个独立的列。因此 counter_cache 是不可能的。
解决方案
您可以使用一些 sql-magic(以下适用于 mysql,尚未在 postgres 中测试,但也应该):
posts = Post.group(:category_id).order('count(*)').select('count(*) as category_cnt, posts.*')
category_count = posts.first.category_cnt
推荐阅读
- python - Django ORM关系一对多
- flutter - 如何在 Flutter 开发的源代码中进行引擎映射?(安卓)
- java - 在 Spring Boot Services 中运行 H2 数据库多个实例
- python - Python 子字符串搜索的对抗性输入
- outlook - 共享邮箱上的 MailItem.GetConversation()
- asp.net - 如何将 IHttpHandler 注册为默认文档
- multithreading - 我如何处理 Spring boot 主线程等到新线程进行一些计算
- javascript - 在 Vue2 中的方法内使用 eval() 可以工作,但不能同时工作
- java - java.lang.UnsupportedOperationException:此功能仅在元素类型实现 RealmModel 时可用
- reactjs - React create-react-app 在构建时更改静态目录的名称