Еще пример работы с D7
Задача: Выбрать все элементы инфоблока у которых дублируются символьные коды.
Прямой запрос:
1 2 3 4 5 6 7 8 |
select CODE, COUNT(ID) as CNT, GROUP_CONCAT(ID) as IDList from b_iblock_element WHERE IBLOCK_ID = 1 GROUP BY CODE HAVING CNT > 1 |
API:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
CModule::IncludeModule('iblock'); $query = new \Bitrix\Main\Entity\Query(Bitrix\Iblock\ElementTable::getEntity()); $query ->setSelect(array('CODE', 'cnt', 'IDList')) ->setFilter(array('IBLOCK_ID' => 1, '>cnt' => 1)) ->registerRuntimeField('cnt', array( 'data_type' => 'integer', 'expression' => array('count(%s)', 'CODE') )) ->registerRuntimeField('IDList', array( 'data_type' => 'string', 'expression' => array('GROUP_CONCAT(%s)', 'ID') ) ); $obResult = $query->exec(); print($query->getQuery())."\r\n"; print_r($obResult->fetchall()); |