在控制器中,我有一个带子选择的activequery以获取计数,并希望使用该计数进一步限制返回的行。例如,评论= 0
我使用的是hading,因为那是我可以在mysql提示符下对其进行测试的唯一方法。在where子句中检查聚合函数不起作用。
有任何想法吗?
最终,我的目标是将其调整为destroy语句,以删除满足该条件的值,但我什至不知道该怎么做。因此,这意味着仅从hbookmarks表(而不是书签表)中删除行。
来自控制器的代码:
Hbookmark.joins("INNER JOIN bookmarks ON hbookmarks.bookmark_id = bookmarks.id")
.select("bookmarks.short_name, hbookmarks.id, ( select count(*) from clickcomments where clickcomments.click_id = hbookmarks.id ) as comments")
.where("bookmarks.user_id = ? AND hbookmarks.create_date < DATE_SUB(NOW(), INTERVAL 1 YEAR )", current_user.id)
.having("comments = 0")
.order("hbookmarks.create_date desc")
最佳答案
之前我也遇到过类似的问题,我通过用用于定义它的实际SQL段替换了comments
来解决了这个问题:
having("( select count(*) from clickcomments where clickcomments.click_id = hbookmarks.id ) = 0")