Как сделать фильтрацию поля по 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, которое мы передавали в условие фильтрации.
Показать все комментарии
Войдите или зарегистрируйтесь, что бы комментировать