Справка по системе Платформа ELMA BPM
×
Меню

Подзапросы

Подзапрос – это EQL-запрос, вложенный в другой EQL-запрос (являющийся составной частью другого EQL-запроса). Глубина вложенности не может составлять более 16 подзапросов или 1000 уровней вложенных операторов. Подзапросы рекомендуется заключать в круглые скобки во избежание ошибок при вычислении.
Подзапросы позволяют фильтровать корневые объекты по свойствам связанных объектов.
Подзапросы могут быть составлены по одному из двух правил:
    где: entity – объект, с которым работает подзапрос;
            property – поле из текущего объекта;
          expression – выражение для фильтрации записей объекта. Также может представлять из себя вложенный запрос.
Пример 1. Поиск задач, у которых название сделки совпадает с названием задачи.
Запрос будет иметь следующий вид: Contractor in (FROM Contact SELECT Contractor WHERE Name = PARENT.Subject AND Contractor in (FROM Sale SELECT Contractor WHERE Name = ROOT.Subject))
Следует отметить, если название свойства совпадает с зарезервированным словом (без учета регистра), тогда данное свойство необходимо указывать в квадратных скобках: [Parent] = 1.
Пример 2. Поиск контрагентов, контактные лица которых имеют высокий и низкий приоритет.
В данном случае Контрагент является корневым объектом. Контактное лицо (Контакт) – объект, связанный с корневым объектом "Контрагент". Приоритет – поле связанного объекта "Контакт". В таком запросе подзапрос требуется для того, чтобы указать, что сравнивается поле "Приоритет" у объекта "Контакт".
Запрос будет иметь следующий вид: Contacts IN (Priority IN (Enum('High'), Enum('Low')))
В данном случае сначала в подзапросе будет работать оператор IN (отбирать контактных лиц с высоким и низким приоритетом), далее в запросе оператор IN (отбирать контрагентов с контактными лицами, выбранными подзапросом).

См. также: