Публикация
Как сделать фильтрацию поля по Exists фильтру с параметром (значение другого поля)
17 июля 2018 03:37
Вопрос
Как сделать фильтрацию поля по Exists фильтру с параметром (значение другого поля)?
Ответ
Пример реализации exists-фильтра с фильтрацией:
var esq = this.Ext.create("Terrasoft.EntitySchemaQuery", { "rootSchemaName": "Account" }); // добавляем колонки запроса esq.addColumn("Id"); ... // условие фильтрации для использования внутри exists // searchValue - значение для сравнения с колонкой SearchNumber var subFilters = Terrasoft.createFilterGroup(); subFilters.addItem(Terrasoft.createColumnFilterWithParameter( Terrasoft.ComparisonType.EQUAL, "SearchNumber", searchValue)); // добавляем exists-фильтр с условием в коллекцию фильтров esq var filters = esq.filters; filters.add(Terrasoft.createExistsFilter("[AccountCommunication:Account:Id].Id", subFilters)); //получаем значение запроса esq.getEntityCollection(function(result) { ... }, this);
В результате на сервер будет отправлен примерно такой запрос:
SELECT Id, ... FROM Account WHERE EXISTS (SELECT [SubAccountCommunication].[Id] [Id] FROM [dbo].[AccountCommunication] [SubAccountCommunication] WITH(NOLOCK) WHERE [SubAccountCommunication].[AccountId] = [Account].[Id] AND [SubAccountCommunication].[SearchNumber] = @P1 )
Параметр @P1 будет хранить значение searchValue, которое мы передавали в условие фильтрации.
Показать все комментарии
Войдите или зарегистрируйтесь, что бы комментировать