2013-11-21 3 views
1

У меня возникли проблемы с преобразованием того, что представляет собой несколько простой запрос в динамический запрос LLBLGen Pro. Мне нужно преобразовать что-то вроде следующего SQL (но я буду проездом в значениях для региона, то идентификатор для проверки и требуемые имен):Преобразование SQL с предложением «HAVING» в LLBLGen Pro DynamicQuery

SELECT Parent.Id 
FROM Parent INNER JOIN Child 
ON  Child.ParentId = Parent.Id 
WHERE Parent.Region = '1' 
    AND Parent.Id IN (1, 2, 3, 4, 5) 
GROUP BY 
     Parent.Id 
HAVING SUM(CASE WHEN child.Name IN ('Required1', 'Required2', 'Required3') THEN 1 ELSE 0 END) != 3 

Но я с трудом преобразуя Имея в эквивалент LLBL.

Это то, что я до сих пор:

var q = qf.Create() 
      .From(qf.ParentView 
      .InnerJoin(qf.ChildView) 
       .On(ChildViewFields.Id == ParentViewFields.ParentId)) 
      .Where((ParentViewFields.Region == _region) 
      .And(ParentViewFields.Id.In(_checkIds))) 
      .Select(() => ParentViewFields.Id.ToValue<string>())      
      .GroupBy(ParentViewFields.Id) 
      .Having(???) 

Любая помощь будет принята с благодарностью. Я открыт для альтернативных предложений о том, как выполнить то, что делает SQL (остерегайтесь того, что он должен запускаться в базе данных и не сбивать клиента для дальнейших вычислений).

+0

Просто используйте другое предложение 'Where'. –

+0

Можете ли вы расширить это? Я не изначально для SQL-парня. – SergioL

ответ

1

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

Functions.IIF(ChildViewFields.Name.In("Required1", "Required2", "Required3"), 1, 0).Sum().NotEqual(3) 

(так место, что в Имея вызов)

Пожалуйста, в следующий раз пост на форуме поддержки, чтобы мы могли забрать этот вопрос сразу же, как мы не следить за StackOverflow регулярно ,

+0

К сожалению, я получаю сообщение ORMQueryConstructionExeception с сообщением «Внутренняя ошибка». Нет другой отладочной информации. – SergioL

+0

Спасибо за помощь Франс. Просто хочу также указать, что ошибка, которую я испытал, действительно была ошибкой в ​​источнике LLBL, но вы и ваша команда быстро исправили ее и в процессе обработки фиксированной сборки. Еще раз спасибо. – SergioL

Смежные вопросы