Рейтинг: 1.0000  
На голосовании
Предложил Пользователь 95864 09.10.2014 12:58:05

Группировка элементов при сортировке в CIBlockElement::GetList

Суть проблемы - нельзя сгруппировать элементы по полю с сортировкой отличной от этого поля. Проще говоря: сейчас даже при указании параметра arGroupBy в него добавятся все поля из параметра arSortBy и сгруппированы не будут.

Рейтинг: 0  
Пользователь 95864 09.10.2014 14:48:23
Евгений, каким образом получить через гетлист список элементов отсортированных по одним св-вам и сгруппированных по другим? Запрос такого плана однозначно не является ошибкой - т.к. чтобы отсортировать выдачу нет необходимости добавлять поля в GROUP BY. SELECT в данном случае не волнует - пусть он собирает хоть все возможные поля.

Прямые запросы не предлагать.
Рейтинг: 0  
Пользователь 95864 09.10.2014 14:53:01
FAQ: почему поля из SELECT и ORDER BY автоматически попадают в GROUP BY
И в указанном пояснении должна выводиться именно ошибка проведения запроса, а не его исправление вашей ORM. Т.к. вывод работы гетлиста будет неожиданной для разработчика.


Если в конкретном запросе автоматическое добавление полей в GROUP BY стало для вас неприятным сюрпризом, то:

1) Вы добавили поле в выборку по привычке или случайно, на самом деле его значение вам не нужно
ИЛИ
2) Вы забыли указать агрегацию (MAX, MIN, SUM, AVG и т.д.)
Я не добавлял его в выборку! Я хочу по нему отсортировать выборку.
Рейтинг: 0  
Пользователь 2106 09.10.2014 15:04:23
Запрос такого плана однозначно не является ошибкой - т.к. чтобы отсортировать выдачу нет необходимости добавлять поля в GROUP BY
Запрос такого плана не несет информации по причинам, описанным в документе - выборка невалидна.
список элементов отсортированных по одним св-вам и сгруппированных по другим

Какую задачу Вы решаете - поясните, пожалуйста.
Рейтинг: 0  
Пользователь 95864 09.10.2014 15:18:08
Какую задачу Вы решаете - поясните, пожалуйста.
ВЫБРАТЬ "основное св-во"(и какие-угодно другие поля, которые добавятся автоматически) ИЗ инфоблока ГДЕ св-во1=знач1 И св-во2=знач2 и.тд СГРУППИРОВАННЫЕ ПО "основное св-во" СОРТИРОВАТЬ ПО набору св-в(которых могло не быть ни в фильтре, ни в группировке, ни в выборке) ЛИМИТ  от 4-й до 8-й группы.

>PS Прочел на oracle:
if the SELECT statement contains a GROUP BY clause, the ORDER BY columns must be in the SELECT list.
Очень странная логика, но раз уж так. Подскажите, пожалуйста, как в этих условиях решить проблему?
Нужно получить список фильтрованных групп по определенному порядку с 4-й по 8-ю.