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