ruby-on-rails - Activerecord 计数与连接
问题描述
我有 2 个活动记录关系
class Proxy
# capacity integer
# country string
has_many :configs
end
class Config
belongs_to :proxy
# proxy_id
# port integer
end
我想在 activerecord 查询中查找特定国家/地区的所有代理,其中容量小于他的配置,并通过配置计数器对它们进行排序。
我的意思是我正在尝试做类似的事情(伪 activrecord 示例)
Proxy.joins(:configs).where(country: country)
.where("capacity > ?", :configs.count)
.order_by(:configs.count)
我想也许我纠结于我的问题,它有一个简单的解决方案。
提前致谢!
解决方案
这是标准 SELECT ... JOIN ... GROUP BY ... HAVING ... ORDER
的SQL 任务:
Proxy.
joins(:configs).
group(:id).
having('proxies.capacity > count(configs.id)').
order('count(configs.id)')
推荐阅读
- python - 如何重置我的代码的折扣计数?
- sql - Oracle SQL - 根据列获取最大值
- openlayers - Openlayers - 如何获取多边形的最后绘制坐标
- flutter - Deselect one container while selecting another container in flutter
- reactjs - 警告:在渲染不同的组件(`App`)时无法更新组件(`login`)
- python - Python Telegram 机器人作业队列
- typescript - 升级到 rc.0 时 Material-UI v5 typescript 错误
- sql-server - 创建带有安装程序问题的 OneIM DB
- kernel - 内核中的 rwsem 是否可以在写入者持有时由读者持有?
- ubuntu - 将 OpenCL.so 库添加到 makefile,我收到错误“未定义的引用”