【问题标题】:Active Record select field on included sub query包含的子查询上的 Active Record 选择字段
【发布时间】:2020-07-07 22:36:00
【问题描述】:

我有一些 sql 正在尝试转换为 ActiveRecord

sql 的样子

      select type.name, sum(order.sub_total)
      from orders order
      join order_types type on type.id = order_type_id
      group by type.name

除了我不知道如何选择type.name之外,我大部分时间都在工作。

    Order.
      select("sum(sub_total)").
      joins(:order_type).
      group("order_type_id`")

我想应该是这样的:

    Order.
      select("order_type.name, sum(sub_total)").
      joins(:order_type).
      group("order_type_id`")

但它不知道order_type.name 在这种情况下是什么,所以失败了。

任何人都知道我怎样才能以一种仍然感觉“不合时宜”的方式做到这一点

【问题讨论】:

    标签: ruby-on-rails rails-activerecord ruby-on-rails-6


    【解决方案1】:

    这对我有用:

        Order.
          select("order_types.name, sum(orders.sub_total).
          joins(:order_type).
          group("order_types.name")
    

    【讨论】:

      【解决方案2】:

      你可以这样做:

      grouped_orders = Order.select("order_types.name name, sum(orders.sub_total) sub_total")
                            .joins(:order_type)
                            .group("order_types.name")
      

      然后,您可以像这样列出订单名称:

      grouped_orders.map(&:name)
      

      【讨论】:

        猜你喜欢
        • 2015-07-07
        • 1970-01-01
        • 2012-08-06
        • 2016-03-15
        • 1970-01-01
        • 1970-01-01
        • 2012-04-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多