Сортировка магазинов в ActiveRecord по количеству товаров - PullRequest
1 голос
/ 28 июля 2011

У меня есть модель с именем Shop, в которой много Products.

Я пытаюсь сортировать и отображать 10 магазинов одновременно, основываясь на количестве яблок, апельсинов и манго, которые есть в магазине.

В каждом магазине будет больше яблок, чем апельсинов, и больше апельсинов, чем манго. Магазины будут отсортированы, начиная с магазина с наибольшим количеством яблок.

Какой самый эффективный способ написать этот запрос?

Спасибо!

1 Ответ

0 голосов
/ 28 июля 2011

В ваших вопросах недостаточно информации, поэтому я приму следующие таблицы:

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

По сути, вы запрашиваете путь рельсов , чтобы сделать это:

    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)

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...