Ссылки на поля

Раздел Контекстные ссылки описывает, как используются контекстные ссылки для построения таблиц, в которых выполняются запросы. Эти таблицы содержат множество полей, на которые могут ссылаться различные части запроса, например, раздел ГДЕ.

Ссылки на поля могут состоять из двух или трех частей:

1. Если в запросе только одна контекстная ссылка в разделе ОТ, ссылка на поля таблицы, построенной из этой ссылки, состоит из двух частей:

contextEntityName$dataTableFieldName

В данной ссылке на поле contextEntityName - имя переменной контекста или функции, используемой одной контекстной ссылкой в запросе. dataTableFieldName - имя поля в табличном формате таблицы данных, содержащей значение сущности.

Пример:

SELECT userInfo$firstname FROM users.*:userInfo

В данном примере userInfo$firstname ссылается на поле firstname таблицы данных, в которой содержится значение переменной userInfo во всех контекстах, соответствующих маске users.*.

2. Если в запросе не одна контекстная ссылка, то каждая из них должна иметь альтернативное имя, чтобы у вас была возможность ссылаться на поля таблиц, построенных их этих ссылок. Альтернативное имя назначается при помощи ключевого слова AS:

contextReference AS tableAlias

Пример:

users.*:userInfo as ui

Здесь мы имеем таблицу, построенную из контекстной ссылки users.*:userInfo и альтернативное имя ui. Теперь мы можем ссылаться на поля, используя альтернативное имя.

Типичная форма контекстной ссылки, в состав которой входит альтернативное имя, выглядит следующим образом:

tableAlias.contextEntityName$dataTableFieldName

Пример:

SELECT ui.userInfo$firstname FROM users.*:userInfo as ui

Принцип действия этого запроса такой же, как и в предыдущем примере, однако, здесь на поле таблицы, построенной из "users.*:userInfo", ссылается само альтернативное имя. Еще пример об использовании альтернативного имени см. далее, в примере 6.

Нажмите сюда, чтобы увидеть, где могут появляться ссылки на поля в синтаксисе языка запроса.

На первый взгляд может показаться, что ссылка на поля должна состоять из двух компонентов: tableAlias и fieldName. Но язык запроса AggreGate позволяет вам создавать одну исходную таблицу (таблицу, в которой будет выполняться запрос) из значений нескольких переменных контекста или из вывода нескольких функций контекста. Именно поэтому необходим дополнительный компонент entityName. Он указывает на имя переменной контекста или функции, которая содержит поле entityName.