我有与这些用户(属于)相关的用户和任务。我希望得到少于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. 根据其他列表流和筛选一个列表
- 3. 根据表B记录从一个表中选择记录
- 4. 筛选记录根据6个相关领域
- 5. 根据字段组筛选记录
- 6. 根据关联记录的数量命名作用域
- 7. 基于数据表筛选器的筛选记录集
- 8. SQL:如何根据不同表中的记录从一个表中选择多个记录的计数?
- 9. 根据Linq中的日期时间在列表中筛选记录
- 10. 如何根据日期筛选表(交叉表)中的数据
- 11. 筛选前10个记录中的数据透视表
- 12. 如何根据关联事实来限制CanCan中的记录?
- 13. SQL:根据记录创建日期和其他条件筛选记录
- 14. Swift根据另一个Bool数组筛选其他数组
- 15. 数据库:将一种类型的记录与多个其他表相关联
- 16. 使用SQL,从表中为关联的外键表中的每个关联记录选择单个记录
- 17. FQL - 如何根据工作记录筛选朋友
- 18. Sequelize:根据关联的属于多个记录查找记录 - 但仍然返回所有关联的记录?
- 19. 根据另一个数据库中的表记录删除Hive中的记录
- 20. 获取数据表中筛选器列表中的一个SQL
- 21. LINQ根据另一个列表之间的值筛选结果
- 22. 如何根据日期筛选数据
- 23. Excel 2010:如何根据另一个表中的列表筛选数据透视表
- 24. 无法根据所选值在下拉列表中筛选数据表数据
- 25. 根据一条记录的列值选择多条记录
- 26. 如何根据另一个表中的值删除一个表中的记录?
- 27. 如何筛选到数据视图中的联合项列?
- 28. 如何根据Firebase数据库中的项目数量筛选数据
- 29. 根据MSCRM 2016中的查找筛选子网格记录Online
- 30. 如何根据记录存在从2个表中选择1条记录?
我不能肯定,但我不认为这是工作。它给了我一个我相当肯定不能正确的数字。我们有大约1万个用户,当我改变这个方式来找到少于100个任务的用户时......它告诉我大约有2000个用户。但是,每个用户的平均任务数是2.2 ...那么这怎么可能是正确的呢?编辑:然后当我做超过100个任务的用户时,它说82 ...总共比我们的10,000个用户基数少很多。 – 2012-02-14 18:24:12
对不起。我编辑了我的答案,以更好地解决您的问题。 – 2012-02-14 20:00:20