【问题标题】:getting the count of another table values in existing query Rails获取现有查询 Rails 中另一个表值的计数
【发布时间】:2016-12-20 18:46:11
【问题描述】:

目前我这样做是为了从我的表中获取数据

cameras = Camera.joins("left JOIN users on cameras.owner_id = users.id")
                .joins("left JOIN vendor_models vm on cameras.model_id = vm.id")
                .joins("left JOIN vendors v on vm.vendor_id = v.id")
                .where(condition).order(sorting(col_for_order, order_for)).decorate

这会生成这样的查询

SELECT "cameras".* FROM "cameras" left JOIN users on cameras.owner_id = users.id left JOIN vendor_models vm on cameras.model_id = vm.id left JOIN vendors v on vm.vendor_id = v.id

我有另一个表camera_shares,在该表上我有相机表的关系,因为camera_shares 表中也有一个camera_id,在每个camera_shares 中都有一个camera_id告诉我们份额是哪个相机的,我想计算camera_shares的计数,例如如果有一个id为12的相机,还有20个camera_sharescamera_id=12然后我想计算它的总数。如上所示,我想在 Rails 查询中执行此操作吗?那怎么可能呢?

【问题讨论】:

    标签: ruby-on-rails postgresql pg


    【解决方案1】:

    看起来相当简单。假设您要查找 @camera 的 camera_shares 数量:

    CameraShare.where(camera: @camera).count
    

    【讨论】:

    • 为什么投反对票?如果我的回答有任何问题,请随时发表评论。
    • 我知道如何按照您上面提到的方式做到这一点。但我希望在查询中使用joins,我正在寻找一种可以在活动记录中使用count 的方法
    • 你的意思是你想用 Camera.joins(...) 来做?不管你加入什么,这都行不通。因为查询将选择“cameras”,而不是“camera_shares”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-26
    • 2010-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多