Посмотрел запись конференции на тему "Расширенное API инфоблоков. Организация больших массивов данных на основе инфоблоков. Способы обеспечения производительности и типовые ошибки"
Цитирую Максима: "Построить запрос к реляционной базе данных, который бы выбирал уникальные строчки со сгруппированными в виде массива отдельными кортежами… я таких баз не видел и не знаю, для MYSQL точно нет."
Предлагаю решение (ниже), которое прекрасно и достаточно быстро работает на практике, причем делает корректную постраничку.
Мои вопросы:
1. Чем не устраивает такое решение?
2. Такое решение имеет подводные камни, которые я не вижу (помимо переполнения строки, что исключается)?
3. Почему такое нельзя интегрировать в модуль иблоков?
Здесь выбираются элементы иблока $ID (ID, NAME), и его свойство в виде массива из NAME, которое является множественной привязкой к секциям другого иблока (классификатора).
Сепаратор '#' использован для примера.
Я, конечно, понимаю, что длина строки не бесконечна, и можно ее переполнить. Но на практике (когда надо отобрать авторов книги, регионы привязки, классификаторы и т.д.) такого не происходит.
С уважением.
Цитирую Максима: "Построить запрос к реляционной базе данных, который бы выбирал уникальные строчки со сгруппированными в виде массива отдельными кортежами… я таких баз не видел и не знаю, для MYSQL точно нет."
Предлагаю решение (ниже), которое прекрасно и достаточно быстро работает на практике, причем делает корректную постраничку.
Мои вопросы:
1. Чем не устраивает такое решение?
2. Такое решение имеет подводные камни, которые я не вижу (помимо переполнения строки, что исключается)?
3. Почему такое нельзя интегрировать в модуль иблоков?
Цитата |
---|
1) SET group_concat_max_len = $MAX_CONCAT; 2) SELECT a.ID, a.NAME, GROUP_CONCAT(c.NAME SEPARATOR '#') as D FROM b_iblock_element a left join b_iblock_element_property b on (b.IBLOCK_ELEMENT_ID=a.ID) left join b_iblock_section c on (c.ID=b.value_num) where a.IBLOCK_ID = $ID AND (...фильтр...) group by ID 3) $arSubitems = explode(...) |
Сепаратор '#' использован для примера.
Я, конечно, понимаю, что длина строки не бесконечна, и можно ее переполнить. Но на практике (когда надо отобрать авторов книги, регионы привязки, классификаторы и т.д.) такого не происходит.
С уважением.
Экс-битриксоид.
Компонент (и.с.) - существительное мужского рода (ГОСТ 34.003-90).
Компонент (и.с.) - существительное мужского рода (ГОСТ 34.003-90).