Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Поиск максимума и минимума цен в торговых предложениях

00 голосов
3
Сабж. Каким образом найти максимум и минимум цены в торговых предложениях?
спросил 20 Фев, 14 от Madys (360 баллов)

3 Ответы

00 голосов
если работаете в API, то можете использовать выборку элементов (торговых предложений) с группировкой MIN/MAX
ответил 17 Июль, 14 от HolyRage (280 баллов)
00 голосов
через CPrice:GetList с группировкой или через что=то другое?
ответил 18 Ноя, 14 от Madys (360 баллов)
00 голосов
Цитата
ghostamonsta пишет:
через CPrice:GetList с группировкой или через что=то другое?
Попытался проверить свою теорию, вначале предполагал, что можно сгруппировать в функции CIblockElement::GetList(), а нет, группировка по CATALOG_GROUP_3 приводит к ошибке MySQL, видимо, группирует только по свойствам инфоблока. Пока из очевидных осталось только решение для каждого товара находить отдельно минимум и максимум. В итоге группировка выглядит так:

Код
$min = CPrice::GetList(array(), array('PRODUCT_ID'=>$ids), array('MIN'=>"PRICE"))->Fetch();
$max = CPrice::GetList(array(), array('PRODUCT_ID'=>$ids), array('MAX'=>"PRICE"))-Fetch();


Здесь $ids - это либо 1, либо множество ID товаров, для которых надо найти минимум. Если их будет множество, то результат все равно будет 1 - минимальная цена из всех товаров. В качестве ID здесь используются не ID товаров, а ID товарных предложений из соответствующего инфоблока.

Это не очень правильно с точки зрения оптимизации, на каждый товар будет приходиться по 2 запроса к БД. Если вам постоянно надо эти запросы делать, то у товара лучше завести 2 свойства ИБ, соответственно максимум и минимум и обновлять их по событию изменения цены товара OnPriceUpdate. Другой момент еще, поиск минимума и максимума происходит по значению цены без конвертации курсов валют, так что если у вас мультивалютный магазин, то будут проблемы, потому что по значению $100 будет меньше 200 рублей.
ответил 14 Март, 15 от HolyRage (280 баллов)

Похожие вопросы