根据多个产品的数量对ActiveRecord中的商店进行分类

时间:2011-07-28 07:53:37

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

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

我正在尝试根据商店的苹果,橘子和芒果的数量,一次分类和展示10家商店。

每家商店的苹果比橘子多,橘子多于芒果。商店将从具有最多苹果的商店开始分类。

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

谢谢!

1 个答案:

答案 0 :(得分:0)

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

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

基本上,你要求的是 rails way 来做到这一点:

    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)

希望这有帮助!