我有与这些用户(属于)相关的用户和任务。我希望得到少于5个任务的用户数量。我会怎么做呢?如何根据其中一个关联的数量筛选记录列表?
1
A
回答
0
不知道是否有这样做的一个简单的方法,但这应该工作:
User.joins(:tasks).select("users.*, count(*) as task_count").having("task_count < 5").group(:id)
编辑:以上只返回至少有一个相关的任务,用户的实例。
你想要的是:
User.joins("LEFT JOIN tasks ON tasks.user_id = users.id").select("users.*, IFNULL(count(tasks.id), 0) AS task_count").having("task_count < 5").group(:id)
但更好的解决方案可能是只是一个counter_cache添加到您的用户模型。
0
我不知道,如果这个工程预1.9.2但:
User.where(Task.count > 5).count
+0
我在1.8.7,这没有奏效。给我:错误的参数数量(0代表1) – 2012-02-14 17:49:12
相关问题
- 1. DataMapper根据关联计数筛选记录
- 2. Access VBA如何根据多选列表框中的选项筛选记录集?
- 3. 根据其他列表流和筛选一个列表
- 4. 如何根据一些关联的元数据从列表中选择任务?
- 5. 根据表B记录从一个表中选择记录
- 6. 筛选记录根据6个相关领域
- 7. 根据另一个表中的相关列更新记录
- 8. 如何根据子查询中的特定值筛选记录?
- 9. 根据字段组筛选记录
- 10. 根据条件筛选Mssql记录
- 11. 根据关联记录的数量命名作用域
- 12. 如何根据两列筛选(一对多关系)表中的行
- 13. 根据其他列值筛选出一个列值
- 14. 基于数据表筛选器的筛选记录集
- 15. SQL:如何根据不同表中的记录从一个表中选择多个记录的计数?
- 16. 如何根据单个文本框中的任何列数据筛选一行
- 17. 根据另一个列表筛选通用列表
- 18. 如何根据日期筛选表(交叉表)中的数据
- 19. 根据Linq中的日期时间在列表中筛选记录
- 20. 如何根据一对多关系选择记录并从一个表中不选择另一个表?
- 21. 筛选前10个记录中的数据透视表
- 22. 如何根据关联事实来限制CanCan中的记录?
- 23. 如何根据关键字筛选csv
- 24. JPA:如何筛选关联?
- 25. SQL:根据记录创建日期和其他条件筛选记录
- 26. 根据另一个表的列值从表中选择一条记录
- 27. 如何根据相关表格的结果选择MySQL记录?
- 28. 数据库:将一种类型的记录与多个其他表相关联
- 29. Swift根据另一个Bool数组筛选其他数组
- 30. 根据关联属性获取记录
我不能肯定,但我不认为这是工作。它给了我一个我相当肯定不能正确的数字。我们有大约1万个用户,当我改变这个方式来找到少于100个任务的用户时......它告诉我大约有2000个用户。但是,每个用户的平均任务数是2.2 ...那么这怎么可能是正确的呢?编辑:然后当我做超过100个任务的用户时,它说82 ...总共比我们的10,000个用户基数少很多。 – 2012-02-14 18:24:12
对不起。我编辑了我的答案,以更好地解决您的问题。 – 2012-02-14 20:00:20