Выборка данных (SELECT) в Битрикс24
Структура запроса
array(
'select' => ... // имена полей, которые необходимо получить в результате
'filter' => ... // описание фильтра для WHERE и HAVING
'group' => ... // явное указание полей, по которым нужно группировать результат
'order' => ... // параметры сортировки
'limit' => ... // количество записей
'offset' => ... // смещение для limit
)
select
array(
'select' => array('ISBN', 'TITLE', 'PUBLISH_DATE')
)
// SELECT ISBN, TITLE, PUBLISH_DATE FROM my_book
array(
'select' => array('ISBN', 'TITLE', 'PUBLICATION' => 'PUBLISH_DATE')
)
// SELECT ISBN, TITLE, PUBLISH_DATE AS PUBLICATION FROM my_book
array(
'select' => array('*')
)
// SELECT *
filter
array(
'filter' => array('=ID' => 1)
)
// WHERE ID = 1
array(
'filter' => array('%=TITLE' => 'Patterns%')
)
// WHERE TITLE LIKE 'Patterns%'
многоуровневым массивом со склейкой выражений AND/OR:
array(
'filter' => array(
'=ID' => 1,
'=ISBN' => '9780321127426'
)
)
// WHERE ID = 1 AND ISBN = '9780321127426'
array(
'filter' => array(
'LOGIC' => 'OR',
array(
// 'LOGIC' => 'AND', // по умолчанию элементы склеиваются через AND
'=ID' => 1,
'=ISBN' => '9780321127426'
),
array(
'=ID' => 2,
'=ISBN' => '9781449314286'
)
)
)
// WHERE (ID=1 AND ISBN='9780321127426') OR (ID=2 AND ISBN='9781449314286')
Полный список операторов сравнения, которые можно использовать в фильтре:
- = равно (работает и с массивами)
- % подстрока
- > больше
- < меньше
- @ IN (EXPR), в качестве значения передается объект DB\SqlExpression
- !@ NOT IN (EXPR), в качестве значения передается объект DB\SqlExpression
- != не равно
- !% не подстрока
- >< между, в качестве значения передается массив array(MIN, MAX)
- >= больше или равно
- <= меньше или равно
- =% LIKE
- %= LIKE
- == булевое выражение для ExpressionField (например, для EXISTS() или NOT EXISTS())
- !>< не между, в качестве значения передается массив array(MIN, MAX)
- !=% NOT LIKE
- !%= NOT LIKE
- ‘==ID’ => null строгое сравнение с NULL по ID
- ‘!==NAME’ => null строгое сравнение с NULL по NAME
group
В параметре group перечисляются поля для группировки:
array(
'group' => array('PUBLISH_DATE')
)
order
Параметр order позволяет указать порядок сортировки:
array(
'order' => array('PUBLISH_DATE' => 'DESC', 'TITLE' => 'ASC')
)
array(
'order' => array('ID') // направление по умолчанию - ASC
)
offset/limit
Параметры offset и limit помогут ограничить количество выбираемых записей или реализовать постраничную выборку:
array(
'order' => array('ID' => 'DESC')
'limit' => 10
)
// 10 последних записей
array(
'order' => array('ID')
'limit' => 20,
'offset' => 80
)
// 5-я страница с записями, по 20 на страницу
Спасибо, помогли разобраться с select\!