Доброго времени суток,
Я бы хотел попросить помощи в реализации подобного SQL запроса через entitySchemaQuery на фронт енде
Select id,
name
from TableA
where
accountId = '777'
and (name <> 'Igor'
OR name <> 'Alex') Из того что я пробовал
var esQuery = this.Ext.create("Terrasoft.EntitySchemaQuery", { rootSchemaName: "TableA" });
esQuery.addColumn("Id");
esQuery.addColumn("Name");
var esqMainFilter = esQuery.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "account", "777");
var esqFirstFilter = esQuery.createColumnFilterWithParameter(Terrasoft.ComparisonType.NOT_EQUAL, "Name", "Igor");
var esqSecondFilter = esQuery.createColumnFilterWithParameter(Terrasoft.ComparisonType.NOT_EQUAL, "Name", "Alex");
var secondaryFilter = Terrasoft.createFilterGroup();
secondaryFilter.logicalOperation = Terrasoft.LogicalOperatorType.OR;
secondaryFilter.add("esqFirstFilter", esqFirstFilter);
secondaryFilter.add("esqSecondFilter", esqSecondFilter);
esQuery.filters.logicalOperation = Terrasoft.LogicalOperatorType.AND;
esQuery.filters.add("esqMainFilter", esqMainFilter);
esQuery.filters.add("esqSecondaryFilter", secondaryFilter);Спасибо!
Нравится
1 комментарий
9 января 2018 16:04
Добрый день,
Вот пример похожего запроса через entitySchemaQuery на клиенте
esQuery = Ext.create("Terrasoft.EntitySchemaQuery", { rootSchemaName: "Contact" });
esQuery.addColumn("Name");
var esqMainFilter = this.Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "Account", "b3f737a4-d95b-4c87-9082-8d0deb421882");
esQuery.filters.logicalOperation = Terrasoft.LogicalOperatorType.AND;
esQuery.filters.addItem(esqMainFilter);
var esqFirstFilter = this.Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.NOT_EQUAL, "Name", "test2");
var esqSecondaryFilter = this.Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.NOT_EQUAL, "Name", "test3");
var filterCollection = this.Terrasoft.createFilterGroup();
filterCollection.logicalOperation = Terrasoft.LogicalOperatorType.OR;
filterCollection.addItem(esqFirstFilter);
filterCollection.addItem(esqSecondaryFilter);
esQuery.filters.addItem(filterCollection);
esQuery.getEntityCollection();используем this.Terrasoft.createFilterGroup() для того что бы добавить группу фильтров с OR.
выполнив этот запрос в консоли браузера профайлером отловила запрос который пришел в БД, выглядит он следующим образом:

Показать все комментарии
Войдите или зарегистрируйтесь, что бы комментировать