2013-04-23 2 views
0

FetchXML을 사용하여 일부 중첩 된 조인을 시도하고 있습니다. 두 개의 연결된 하위 엔터티에 대한 내부 조인을 수행 한 다음 해당 결과에 대한 외부 조인을 수행하여 두 개의 연결된 자식 엔터티의 데이터가있는 경우 상위의 모든 행을 검색합니다. childEntity2에 레코드가있는 경우에만 childEntity1의 데이터 만 원하지만 항상 부모의 모든 행을 원합니다.외부 조인과 중첩 된 내부 조인을 사용하는 FetchXML : 중첩 된 내부 조인에서 외부 조인을 수행 할 수 있습니까?

T-SQL에서 그것은 것 내가 모든 것을 링크 형 = 외부를 사용할 때 나는를 변경할 때, 나는 예상대로 부모 개체로부터 모든 행을 얻을 수 있지만, FetchXML에서

SELECT [fields] FROM ParentEntity OUTER JOIN 
    (childEntity1 INNER JOIN childEntity2 ON childEntity1.id = 
    childEntity2.childEntity1id) 
ON ParentEntity.id = childEntity1.parentEntityId. 

, 같은 자식 엔터티에 대한 링크 형식을 inner로 설정하면 내 결과 집합에는 두 자식 엔터티의 조인에서 아무 것도 반환되지 않는 행이 포함되지 않습니다.

FetchXML에서 위의 SQL 문과 같이 내부 조인을 중첩 할 수 있습니까?

다음은 내 FetchXML의 간소화 된 버전입니다. childEntity1/childEntity2의 링크 유형이 "outer"인 경우 parentEntity에서 모든 행을 가져 오지만 "inner"인 경우 parentEntity의 행은 하위 엔티티의 조인 결과로 필터링됩니다.

<fetch version='1.0' mapping='logical' distinct='false'> 
    <entity name='parentEntity'> 
     <link-entity link-type='outer' name='childEntity1' from='parentEntityId' to='parentEntityId'> 
      <link-entity link-type='inner' name='childEntity2' from='childEntity1Id' to='childEntity1Id'> 
      </link-entity> 
     </link-entity> 
    </entity> 
</fetch> 
+1

모든 사람들은 인정하기가 부끄럽지만 중첩 된 조인은 실제로 예상대로 작동한다고 생각합니다. 나는 그들이하지 않은 것들로 가장하는 데이터 행을 가지고 있었고 그것은 내 쿼리를 엉망으로 만들고 있었다. 어쨌든 SQL Profiler는 DB로 보내지는 것을 정확히 보여 주었고, 내가 원했던 것입니다. –

+0

이것에 대해 확실합니까? 이 테스트를 거친 것을 기억하고 예상 한 결과를 얻지 못했습니다 ... 필터 조건을 추가하여 '왼쪽'결과 만 검색하려고하면 문제가 발생합니다. – Nathan

답변

1

위의 코멘트를 참조하십시오. SQL 프로파일 러는 구조 작업을하기 위해 나에게 정확히 무엇이 데이터베이스로 보내 졌는지 보여 주었고 조인은 내가 원하는대로 중첩되어있었습니다.