Коллеги, подскажите есть ли в EntitySchemaQuery аналог Select COUNT (*)
Нравится
Добрый день!
Подозреваю, что речь идет о сервере, но желательно это указывать в вопросе. Именно Ваш вариант можно получить примерно таким образом
new Select(UserConnection).Column(Func.Count(Column.Asterisk())).From("Account")
Если необходимо именно esq, то примерно так
var esq = new EntitySchemaQuery(UserConnection.EntitySchemaManager.GetInstanceByName("Account")); esq.AddColumn(esq.CreateAggregationFunction(AggregationTypeStrict.Count, "Id"));
Во втором варианте будет конечно не select count(*), а select count(Id), но, думаю, нужный эффект будет достигнут.
Ну и на всякий случай клиент
var esq = Ext.create('Terrasoft.EntitySchemaQuery', { rootSchemaName: "Account" }); esq.addAggregationSchemaColumn("Id", Terrasoft.AggregationType.COUNT, 'CountRows');
Добрый день!
Подозреваю, что речь идет о сервере, но желательно это указывать в вопросе. Именно Ваш вариант можно получить примерно таким образом
new Select(UserConnection).Column(Func.Count(Column.Asterisk())).From("Account")
Если необходимо именно esq, то примерно так
var esq = new EntitySchemaQuery(UserConnection.EntitySchemaManager.GetInstanceByName("Account")); esq.AddColumn(esq.CreateAggregationFunction(AggregationTypeStrict.Count, "Id"));
Во втором варианте будет конечно не select count(*), а select count(Id), но, думаю, нужный эффект будет достигнут.
Ну и на всякий случай клиент
var esq = Ext.create('Terrasoft.EntitySchemaQuery', { rootSchemaName: "Account" }); esq.addAggregationSchemaColumn("Id", Terrasoft.AggregationType.COUNT, 'CountRows');
Лопатин Константин Николаевич,
Уточню:
Речь идет о запросе на сервере.
Сам запрос выглядит так:
Select COUNT (*) as CountServiceEngineers
FROM [dbo].[ServiceEngineer] as [ServiceEngineer]
LEFT OUTER JOIN [dbo].[ServiceItem] as [ServiceItem] on [ServiceItem].id = [ServiceEngineer].[ServiceItemId]
Where [ServiceItem].Id = '9ac3a38b-fd9f-4802-b9d7-a3bcb28f8e96'
Во втором примере выше приведен именно серверный ESQ, о котором спрашиваете. Останется только наложить фильтр, как обычно.
Кстати, в приведенном запросе даже JOIN не нужен, поскольку ServiceItemId есть прямо в ServiceEngineer.