【问题标题】:Sort shops in ActiveRecord based on number of multiple products根据多个产品的数量对 ActiveRecord 中的商店进行排序
【发布时间】:2011-07-28 07:53:37
【问题描述】:

我有一个名为 Shop 的模型,它有很多 Products

我正在尝试根据商店拥有的苹果、橙子和芒果的数量一次对 10 家商店进行分类和显示。

每家商店的苹果比橙子多,橙子比芒果多。商店将从苹果最多的商店开始排序。

编写此查询最有效的方法是什么?

谢谢!

【问题讨论】:

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


    【解决方案1】:

    您的问题缺乏信息,因此我将假设以下表格:

    -------------      -----------------------------------------------------------
    | Shop      |      | Stock                                                   |
    -------------      -----------------------------------------------------------
    | id | name |      | id | shop_id | apple_count | orange_count | mango_count |
    -------------      -----------------------------------------------------------
    

    基本上,您要求的是 rails 方式

        select shop.name
              ,apple_count
              ,orange_count
              ,mango_count
          from current_stock
    inner join shop on current_stock.shop_id = shop.shop_id
      order by apple_count  desc
              ,orange_count desc
              ,mango_count  desc
         limit 10
    

    您可以通过以下方式实现:

    Shop.joins(:stocks).order("apple_count desc, orange_count desc, mango_count desc").limit(10)
    

    希望这会有所帮助!

    【讨论】:

    • 您好多米尼克,感谢您的回答。抱歉,我应该添加更多信息:Shop has_many :products, :through => :stockProduct has_many :shops, :through => :stockStock 模型具有shop_id product_id。可能不仅仅是苹果、橙子和芒果产品,因此我在商店和产品之间创建了另一个模型。
    • 此外,每个商店的苹果数量必须比他们销售的任何其他产品都多。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-11
    • 2021-05-08
    • 2014-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多