|
|
Описанные ниже допустимые значения part используются для формирования структур для выполнения запросов. Их смысл и назначение являются общими для формирования запросов в формате XML, в формате JSON, а также средствами Интерфейса IContextDataSet. Для форматов XML и JSON можно использовать и строковые, и числовые значения part. В запросах, формируемых средствами Интерфейса IContextDataSet допустимо присваивать числовые значения или идентификаторы из Перечисления TQueryPart. Строковое значение | Числовое значение | Идентификатор | Назначение и принципы использования |
|---|
| what | 0 | qtWhat | Значение what используется для формирования what-кляузы запроса. При part = "what" использование атрибута/поля name является обязательным. Каждый элемент запроса со значением what атрибута/свойства part добавляет одно поле (столбец), с именем, заданным значением name, к результирующему набору данных. Атрибут/свойство value в этом случае игнорируется. Подробности и примеры для разных форматов | | where | 1 | qtWhere | Значение where используется для формирования where-кляузы запроса. При part = "where" использование атрибутов/полей name и value является обязательным. В простом случае (без использования "special") name задает имя поля, на которое будет наложено условие отбора, значение value задает само условие, которое будет наложено. При использовании "special" значения name и value могут трактоваться иначе, подробнее в разделе Допустимые значения special. Каждый следующий where-элемент/объект добавляет к запросу одно условие "и". Для условий допустимо использовать "маску" (*, ?), условия ">", "<", ">=", "<=". Использование значений через ";" будет трактовано как условие "или", использование символа "&" будет трактовано как условие "и". Для отрицания нужно использовать символ "!", для условия "not null" нужно использовать "*", для условия "is null" нужно использовать "!*". Подробности и примеры для разных форматов | | order | 2 | qtOrder | Элементы со значением "order" (2) атрибута part используются для управления сортировкой данных в возвращаемом ответе. По умолчанию (без использования атрибута special) будет выполнена сортировка "по возрастанию". Задать сортировку "по убыванию" можно, использовав значение "desc" (7) для атрибута special. Если в запросе использовано несколько элементов "order", то возвращаемый результат будет отсортирован по нескольким полям в том порядке, в котором они указаны в запросе. Пример | 1<item part="order" name="LastName/>
2<item part="order" name="BirthDate" special="desc"/> Отсортировать результат запроса по значению свойства "LastName" по возрастанию, затем по значению свойства "BirthDate" по убыванию. |
| | group | 3 | qtGroup | Элементы со значением "group" (3) атрибута part используются для управления группировкой данных в возвращаемом ответе. Если в запросе использовано несколько элементов "group", то возвращаемый результат будет сгруппирован по нескольким полям в том порядке, в котором они указаны в запросе. Для свойств, не входящих в условия группировки, можно получать значения агрегатов (количество, наименьшее/наибольшее/среднее и т.п.), используя атрибут special. Пример | 1<item part="what" name="Region"/>
2<item part="what" name="ID" special="count"/>
3<item part="what" name="BirthDate" special="min"/>
4<item part="group" name="Region"/> Сгруппировать результат запроса по значению свойства "Region", для каждой группы вернуть значение свойства "Region", количество записей в группе и минимальное значение свойства "BirthDate" в этой группе. |
| | having | 4 | qtHaving | Элементы со значением "having" (4) атрибута part позволяют накладывать условия отбора на группы в запросе с группировкой. Пример | 1<item part="what" name="Region"/>
2<item part="what" name="ID" special="count"/>
3<item part="what" name="BirthDate" special="min"/>
4<item part="group" name="Region"/>
5<item part="having" name="ID" value=">3" special="count"/> Сгруппировать результат запроса по значению свойства "Region", для каждой группы вернуть значение свойства "Region", количество записей в группе и минимальное значение свойства "BirthDate" в этой группе, отобрав при этом только такие группы, количество объектов в которых больше 3-х. |
| | innerJoin | 5 | qtInnerJoin | | outerJoin | 6 | qtOuterJoin |
|
|