Может кто-нибудь подскажет как на стороне C# , построить фильтр такого типа
SELECT t.* FROM "ScParticipEransaction" t WHERE t."ScFApplicationId" = '{37D4FA0D-C359-4FA3-A1AC-0264335DC7FE}' AND t."ScAccountId" IS not NULL AND NOT EXISTS (SELECT * FROM "ScActivityType" aa WHERE t."ScAccountId" = aa."ScAccountId" AND aa."ScTypeId" = '{65DA2BBA-9A74-47D4-8205-86EA39FF27A8}')
Т.е. здесть основное как в запросе NOT EXISTS добавить условие "ScTypeId" = '{65DA2BBA-9A74-47D4-8205-86EA39FF27A8}', с помощью EntitySchemaQuery на C#.
вот фильр но как дальше, как добавить условие в подзапрос не понятно.
esq.Filters.Add(esq.CreateFilterWithParameters(FilterComparisonType.Equal, "ScFApplication", applicationId)); esq.Filters.Add(esq.CreateFilterWithParameters(FilterComparisonType.IsNotNull, "ScAccount")); esq.Filters.Add(esq.CreateExistsFilter("[ScActivityType:ScAccount:ScAccount]")); esq.Filters.Add(esq.CreateFilterWithParameters(FilterComparisonType.Exists, "[ScActivityType:ScAccount:ScAccount]"));
Нравится
2 комментария
Лучший ответ
13 июля 2019 13:35
Добрый день используйте класс Select - https://academy.terrasoft.ru/api/netcoreapi/7.11.0/index.html#Terrasoft.Core~Terrasoft.Core.DB.Select_members.html
13 июля 2019 13:35
Добрый день используйте класс Select - https://academy.terrasoft.ru/api/netcoreapi/7.11.0/index.html#Terrasoft.Core~Terrasoft.Core.DB.Select_members.html
15 июля 2019 10:47
Пример работы с NOT EXISTS для класса Select:
var selectContact = new Select(UserConnection) .Distinct() .Column(OpenProfileLookupName + "Id") .From(OpenProfileLookupName + "Profile") .Where("ProfileId").In(Column.Parameters(objectProfileId)) .And().Not().Exists(new Select(UserConnection) .Column("Id") .From("CampaignTarget") .Where("CampaignTarget", OpenProfileLookupName + "Id") .IsEqual(OpenProfileLookupName + "Profile", OpenProfileLookupName + "Id") .And("CampaignTarget", "CampaignId").IsEqual(new QueryParameter(selectedCampaignId)) as Select) as Select; using (var dbExecutor = UserConnection.EnsureDBConnection()) { using(var dr = selectContact.ExecuteReader(dbExecutor)) { while (dr.Read()) { Guid contactId = (Guid)dr.GetValue(0); var schema = schemaManager.GetInstanceByName("CampaignTarget"); //... } } }
Показать все комментарии
Войдите или зарегистрируйтесь, что бы комментировать