Вопрос

Помогите sql перевести в клиентскую EntitySchemaQuery

select ad.id, ad.Address

from 

  AddressType at, 

  AccountAddress ad

where 

    ad.AccountId = 'e308b781-3c5b-4ecb-89ef-5c1ed4da488e'

    and at.Id = ad.AddressTypeId

    --and at.Name = 'Собеседования' 

    and at.Name = 'Места работы'

var select = this.Ext.create("Terrasoft.EntitySchemaQuery", { rootSchemaName: "AccountAddress" });

                    select.addColumn("Id");

                    select.addColumn("Address");

                    select.filters.add("filterByAccountWork1",

                        select.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL,

                            "Account", this.get("AccountId")));

                    select.filters.add("filterByAccountWork2",

                        select.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL,

                            "AddressType", "Места работы"));

                            /* вот тут где-то синтакс ошибка

                    select.filters.add("filterByAccountWork3",

                        select.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL,

                            "[AccountAddress:AddressType].Id",

                            "[AccountAddress.AddressType].Id"));

                            */

 

Нравится

3 комментария

Добрый день

А вам точно нужно декартовое произведение? Это будет долго работать

Чем не подойдет?

select 
   ad.id, 
   ad.Address 
from 
  AccountAddress ad
  inner join AddressType at on at.Id = ad.AddressTypeId
where 
    ad.AccountId = 'e308b781-3c5b-4ecb-89ef-5c1ed4da488e'
    --and at.Name = 'Собеседования' 
    and at.Name = 'Места работы'

и в этом случае все гораздо проще, и данных в разы меньше

 

Артем Гура,

Привет, Да, так лучше намного будет, а как это сделать на esq? :) Запутался, все время синтакс еррор в консоли. Пытался сделать по 

https://academy.terrasoft.ru/documents/technic-sdk/7-12/postroenie-pute… но пока не смог :), прошу помощи

QArt,

Что-то вроде этого:

var esq = Ext.create("Terrasoft.EntitySchemaQuery", {
    rootSchemaName: "AccountAddress"
});
esq.addColumn("Id");
esq.addColumn("Address");
var filterGroup = Ext.create("Terrasoft.FilterGroup");
filterGroup.logicalOperation = Terrasoft.LogicalOperatorType.AND;
filterGroup.addItem(Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "Account", ''));
filterGroup.addItem(Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "=[AddressType:Id:AddressTypeId].Name", 'Собеседования'));
esq.filters.addItem(filterGroup);
esq.getEntityCollection(...)

 

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