2013-11-21 4 views
1

다소 단순한 쿼리를 LLBLGen Pro 동적 쿼리로 변환하는 데 문제가 있습니다. 나는 갖는 변환 힘든 시간을 보내고있어,"HAVING"절을 사용하여 SQL을 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 

을하지만 : 나는 SQL은 (하지만, ID가 확인하고 필요한 이름으로이 지역에 대한 값을 전달 할 수 있습니다) 다음과 같이 뭔가를 변환해야 절을 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) 

(그래서 갖는 호출이 배치)

하시기 바랍니다 우리의 지원 포럼에 다음 시간 후 우리는 바로 우리가 정기적으로 유래 모니터링 해달라고 같은 질문을 선택할 수 있도록 .

+0

불행히도 "Internal Error"라는 메시지가있는 ORMQueryConstructionExeception이 나타납니다. 다른 디버그 정보가 없습니다. – SergioL

+0

도움을 주셔서 감사합니다. Frans. 단지 내가 경험 한 오류가 실제로 LLBL 소스의 버그라는 것을 지적하고 싶지만, 귀하와 귀하의 팀은 신속하게이를 수정하고 고정 된 빌드를 릴리스하는 중입니다. 다시 감사합니다. – SergioL