我有與這些用戶(屬於)相關的用戶和任務。我希望得到少於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