У меня есть 2 модели: Product
и Sku
, где Product
имеет много Sku
sСортировка по атрибуту цене дочернего модели
Я пытаюсь придумать интерфейс сортировки Поиск &, и у меня есть фильтры работают для продукта категория и т. д. Мой вопрос заключается в том, как вернуть ранжированные продукты по цене skus.
Например:
product | id: 1
product | id: 2
product | id: 3
# Skus for Product 1
sku | id: 1, product_id: 1, price: 1111
sku | id: 5, product_id: 1, price: 5555
sku | id: 9, product_id: 1, price: 9999
# Skus for Product 2
sku | id: 2, product_id: 2, price: 2222
sku | id: 3, product_id: 2, price: 3333
sku | id: 4, product_id: 2, price: 4444
# Skus for Product 3
sku | id: 6, product_id: 3, price: 6666
sku | id: 7, product_id: 3, price: 7777
sku | id: 8, product_id: 3, price: 8888
Этакая по "цене от низкого до высокого" должен вернуть:
[ product 1, product 2, product 3 ]
в то время как "цена от высокой к низкой" должен вернуть:
[ product 1, product 3, product 2 ]
Это достаточно просто для 3-х продуктов, но у меня возникли проблемы с выяснением разбивки на страницы (т.е. тысячи продуктов, с последовательным о ffsets и т. д.).
Похоже, что это должна быть некоторая комбинация group by
и поиск по sku
с последующим поиском соответствующих product
. Есть ли простой способ сделать этот тип заказов в Postgres?
Update
Это отличается упоминаемая "дубликат". У меня есть 2 модели здесь, и вы хотите отсортировать одну модель, основанную на значениях своих детей. У дублированного дубликата есть только 1 модель.
Для краевых кейсов: «привязка» по цене sku может быть решена (например, id asc
для skus), если это согласовано. Продукты не имеют значений на заказ, и в БД нет дублированных продуктов.
Возможный дубликат [max(), группировка и порядок] (http://stackoverflow.com/questions/6298703/max-group-by-and-order-by) – Cuagau
Я считаю, что это дубликат http://stackoverflow.com/questions/6298703/max-group-by-and-order-by. ПРИСОЕДИНИТЕСЬ к продукту Sku, затем ЗАКАЗАТЬ МАКС (Sku.price). – Cuagau
Разве это JSON в таблице? JSON - плохой выбор, поскольку sku - это хорошо структурированные данные. –