[英]Sort by SQL Count Used in WHERE Clause in ActiveRecord Scope
我试图获取在作用域声明“ where”子句传递期间使用的计算列,以便随后在返回的集合中使用它。 我已经尝试了许多不同的方法,但是都没有用。 最终,我要完成的工作是按该计数对返回的集合进行排序。 到目前为止,这是我的范围:
scope :used_in_past, ->(days_ago) {
where('(SELECT count(*) as total_tasks FROM grouptask WHERE creatorstudentid = sid AND creationdate > ?) > 0', Date.today-days_ago)
}
我想要“ ORDER BY” total_tasks,并希望将其传递给视图。 每当我尝试使用该命名列时,它只是说它不存在。
也许您可以在SQL语句中使用Alias或Function来做到这一点
SELECT COUNT(sid) AS total_tasks
FROM grouptask
WHERE creatorstudentid = sid AND creationdate>0
GROUP BY sid
ORDER BY COUNT(sid);
如果您使用的是聚合函数,我在您的陈述中没有看到GROUP BY部分,也许您需要
我希望这个答案可以帮助您
问候
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.