ESQ - синтаксис запроса при цепочке присоединения схем.

Необходимо построить строку запроса ESQ, для присоединения колонки:
Таблицы:
Contact
SysAdminUnit
SysAdminUnitInRole

Корневая (текущая схема): Contact

Необходимо присоединить схему "SysAdminUnit" по полю "Contact"
Вопросов нет:

esq.addColumn("[SysAdminUnit:Contact].Id", "AdminUnitId")

В результате в поле ответа "AdminUnitId" будет содержаться соответствующее значение Id из "SysAdminUnit"

Так...
А теперь мы хотим немного усложнить, и использовать полученный Id для присоединения еще одной таблицы SysAdminUnitInRole по полу "SysAdminUnit"
пробуем:

esq.addColumn("[SysAdminUnit:Contact].[SysAdminUnitInRole:SysAdminUnit].Id", "AdminUnitInRoleId")

Но и такая конструкция уже не работает...

Здесь какая-то проблема с колонкой Id так как если для связи все время использовать разные поля - то такая конструкция работает нормально, например если бы мы привязывали "AdminUnitId" у которого нужный нам для дальнейшей связи Id содержался бы в некоем кастомном поле, н/п "TargetId"
, а в конечной таблице SysAdminUnitInRole нам нужен был бы не Id а скажем какое ни будь другое поле, н/п "CustomFiled"
тогда:

esq.addColumn("[SysAdminUnit:Contact"].[SysAdminUnitInRole:SysAdminUnit:TargetId].CustomFiled", "AdminUnitInRoleId")

то такой запрос бы сработал...

Как решать на этапе присоединения колонок эти проблемы с тем что нужно использовать постоянно колонку Id которая в каждой присоединяемой схеме своя ?

Нравится

1 комментарий

Все понятно... Это не я дурак, это лыжи не едут.
SysAdminUnitInRole оказалась ОСОБЕННОЙ таблицей, в нее нельзя делать напрямую ESQ запросы, как и в некоторые другие таблицы системы, даже от лица Supervisor, обсуждалось в этой теме форума

Показать все комментарии