Выборка данных (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
Внимание! Если не указывать явно оператор сравнения =, то по умолчанию будет выполнен LIKE.

 

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 на страницу