Ребята подскажите, возможно ли в bitrix (через его api запросы) описать следующую конструкцию:
SELECT id FROM b_iblock_element ORDER BY id IN (51,20,30) DESC
SELECT id FROM b_iblock_element ORDER BY id IN (51,20,30) DESC
15.03.2013 15:36:08
Ребята подскажите, возможно ли в bitrix (через его api запросы) описать следующую конструкцию:
SELECT id FROM b_iblock_element ORDER BY id IN (51,20,30) DESC |
|
|
|
15.03.2013 16:55:22
Только если вот так:
«Да не могут же они!»
|
|||
|
|
15.03.2013 17:17:01
Опишу задачу подробней. Сейчас у каждого товара есть статусы вида: Акция, Хит, Новинки. Статусы хранятся в свойствах (PROPERTY_).
Задача. Например у нас есть 100 товаров из которых 20 хиты. Запрос должен вернуть первые 20 товаров хиты, а остальные 80, допустим, отсортированные по наличию. |
|
|
|
15.03.2013 17:25:35
Ваш пример вернул 3 элемента, а запрос вида: SELECT id FROM b_iblock_element ORDER BY id IN (51,20,30) DESC, возвращает все елементы (пусть их будет 100 или 1000) и на первое место ставит 51, 20 и 30 |
|||||
|
|
15.03.2013 18:41:39
Здесь вторая сортировка по имени, а не по наличию -- но, думаю, это не принципиально.
«Да не могут же они!»
|
|||||||
|
|
15.03.2013 18:53:59
А мне нужно вначале только хиты, а потом хоть, даже если захочу, в рандомной сортировке. |
|||||
|
|
15.03.2013 18:57:11
Либо я еще думал сделать 2 выборки и объединить их. Но тут сталкиваюсь с проблемой постраничной навигации
|
|
|
|
15.03.2013 18:58:30
$arFilter['PROPERTY_PROD_STATUS'] = 123; // где 123 -- ID значения свойства
«Да не могут же они!»
|
|||
|
|
15.03.2013 19:01:17
В таком случае я получу только хиты, а мне же нужно и остальные товары к ним добавить )
|
||||
|
|
|||