[QUOTE] написал:
Борис, ну как это в SQL делается - тут вроде бы понятно, но как это сделать, используя API Bitrix и ядро D7 ?[/QUOTE]
Ваш запрос априори не обработать с группировкой, т.к. нет таких агрегирующих функций.
Но вот что вы можете сделать. [CODE]$res = \Bitrix\Iblock\ElementTable::getList([
'select' => [
'DATE_CREATE',
new \Bitrix\Main\Entity\ExpressionField(
'IDS',
"GROUP_CONCAT(DISTINCT %s SEPARATOR ',')",
['ID']
),
],
'group' => ['DATE_CREATE'],
'limit' => 20,
])->fetchAll();
print_r($res);
В результате будет конкатенация айдишек одной группы
Например:
[6] => Array
(
[DATE_CREATE] => Bitrix\Main\Type\DateTime Object
(
[userTimeEnabled:protected] => 1
[value:protected] => DateTime Object
(
[date] => 2014-09-25 14:55:08.000000
[timezone_type] => 3
[timezone] => Etc/GMT-3
)
)
[IDS] => 2622,2620,2618,2617,2616,2615,2614,2613,2612,2611,2610,2623,2624,2636,2635,2634,2633,2632,2631,2630,2629,2628,2627,2625,2609,2608
)
Таким образом вы можете делать explode и работать с этими данными. А ваш запрос не обработать по group. Теперь понятно?
[/CODE] Если вам в MySQL было понятно, вас не смутило что вы пытаетесь как-то сгрупировать кучу столбцов. Я не просто так написал что при группировке куча записей "схлопывается" т.е. все записи 20.10.21, например должны превратиться в одну строку, но чтобы это стало одной строкой надо чтобы другие столбцы стали одной строкой, для этого и нужны агрегирующие функции.
Борис, ну как это в SQL делается - тут вроде бы понятно, но как это сделать, используя API Bitrix и ядро D7 ?[/QUOTE]
Ваш запрос априори не обработать с группировкой, т.к. нет таких агрегирующих функций.
Но вот что вы можете сделать. [CODE]$res = \Bitrix\Iblock\ElementTable::getList([
'select' => [
'DATE_CREATE',
new \Bitrix\Main\Entity\ExpressionField(
'IDS',
"GROUP_CONCAT(DISTINCT %s SEPARATOR ',')",
['ID']
),
],
'group' => ['DATE_CREATE'],
'limit' => 20,
])->fetchAll();
print_r($res);
В результате будет конкатенация айдишек одной группы
Например:
[6] => Array
(
[DATE_CREATE] => Bitrix\Main\Type\DateTime Object
(
[userTimeEnabled:protected] => 1
[value:protected] => DateTime Object
(
[date] => 2014-09-25 14:55:08.000000
[timezone_type] => 3
[timezone] => Etc/GMT-3
)
)
[IDS] => 2622,2620,2618,2617,2616,2615,2614,2613,2612,2611,2610,2623,2624,2636,2635,2634,2633,2632,2631,2630,2629,2628,2627,2625,2609,2608
)
Таким образом вы можете делать explode и работать с этими данными. А ваш запрос не обработать по group. Теперь понятно?
[/CODE] Если вам в MySQL было понятно, вас не смутило что вы пытаетесь как-то сгрупировать кучу столбцов. Я не просто так написал что при группировке куча записей "схлопывается" т.е. все записи 20.10.21, например должны превратиться в одну строку, но чтобы это стало одной строкой надо чтобы другие столбцы стали одной строкой, для этого и нужны агрегирующие функции.