엔터티 또는 링크 엔터티와 관련된 테이블을 조인하여 결과와 함께 추가 열을 반환합니다. 필터 요소와 함께 관련 테이블의 열 값에 조건을 적용하는 데도 사용됩니다.
FetchXml을 사용하여 테이블을 조인하는 방법을 알아봅니다.
예시
다음 예제에서는 다양한 유형의 관계와 함께 사용하는 link-entity 것을 보여 줍니다.
다 대 일 관계
이 쿼리는 계정 레코드의 PrimaryContactId 조회 열을 기반으로 계정 및 연락처 테이블의 데이터를 반환합니다.
<fetch>
<entity name='account'>
<attribute name='name' />
<link-entity name='contact'
from='contactid'
to='primarycontactid'
link-type='inner'
alias='contact'>
<attribute name='fullname' />
</link-entity>
</entity>
</fetch>
일대다 관계
이 쿼리는 연락처 account_primary_contact 일대다 관계를 기반으로 연락처 및 계정 테이블의 데이터를 반환합니다.
<fetch>
<entity name='contact'>
<attribute name='fullname' />
<link-entity name='account'
from='primarycontactid'
to='contactid'
alias='account'>
<attribute name='name' />
</link-entity>
</entity>
</fetch>
다대다 관계
이 쿼리는 teammembership_association 다대다 관계를 사용하여 SystemUser 및 팀 테이블의 데이터를 반환합니다.
<fetch>
<entity name='systemuser'>
<attribute name='fullname' />
<link-entity name='teammembership'
from='systemuserid'
to='systemuserid' >
<link-entity name='team'
from='teamid'
to='teamid'
link-type='inner'
alias='team'>
<attribute name='name' />
</link-entity>
</link-entity>
</entity>
</fetch>
Attributes
| 이름 | 필수? | Description |
|---|---|---|
name |
Yes | 관련 테이블의 논리적 이름입니다. |
to |
아니오 | 특성에 지정된 관련 테이블 열과 일치 할 부모 요소에 있는 열의 from 논리적 이름입니다.
기술적으로 필요하지는 않지만 이 특성은 일반적으로 사용됩니다. |
from |
아니오 | 특성에 지정된 to열과 일치하는 관련 테이블의 열 논리적 이름입니다.
기술적으로 필요하지는 않지만 이 특성은 일반적으로 사용됩니다. |
alias |
아니오 | 관련 테이블의 이름을 나타냅니다. 별칭을 설정하지 않으면 모든 열에 고유한 이름이 있는지 확인하기 위해 별칭이 생성되지만 해당 별칭을 사용하여 페치 XML의 다른 부분에서 링크 엔터티를 참조할 수는 없습니다. 자동 생성된 별칭은 1부터 시작하는 페치 XML의 링크 엔터티 순차 번호인 패턴을 {LogicalName}+{N}N 사용합니다. |
link-type |
아니오 | 링크 사용 유형입니다. 기본 동작은 내부 동작입니다. 링크 유형 옵션에 대해 알아보기 |
intersect |
아니오 |
link-entity 일반적으로 다 대 다 관계에 대해 테이블을 조인하고 열을 반환하지 않는 데 사용됨을 나타냅니다. 이 특성이 존재해도 쿼리 실행은 변경되지 않습니다. 테이블에 조인할 link-entity 때 이 특성을 추가할 수 있지만 의도적인 것으로 표시할 특성 요소는 포함하지 않습니다. |
사용 from 및 to 특성
특성과 to 특성 모두 from 에 대한 값을 설정하는 것이 가장 좋습니다. 이러한 두 특성은 일반적으로 일치시킬 열을 명시적으로 정의하는 데 사용됩니다. 그러나 from 특성 및 to 특성은 기술적으로 필요하지 않습니다.
비고
특성 및
to특성에 지정된 열이from동일한 형식이 되도록 하는 것이 중요합니다. 다른 열 형식을 사용하는 것은 지원되지 않습니다. 열이 동일한 형식이 아닌 경우 Dataverse 인프라가 강제로 변환할 수 있지만 이 경우 성능이 크게 저하될 수 있습니다.FetchXml의
from의미와to특성은 QueryExpression을 사용하여 쿼리를 작성할 때 사용되는 해당 LinkEntity.LinkFromAttributeName 및 LinkEntity.LinkToAttributeName 속성과 반대입니다.
이러한 특성 중 하나를 사용하지 않고 두 테이블 사이에 시스템 다대다 관계가 있는 경우 Dataverse는 해당 관계를 사용하여 적절한 키 값을 선택합니다.
특성 to 중 from 하나만 지정하는 경우 Dataverse는 두 테이블 간의 관계 스키마 정의를 사용하여 올바른 관계를 파악하려고 시도합니다.
그렇지 않으면 다음 오류가 발생합니다.
코드:
0x80041102
메시지:No system many-to-many relationship exists between <table A> and <table B>. If attempting to link through a custom many-to-many relationship ensure that you provide the from and to attributes.
예를 들어 이러한 두 쿼리는 systemuser와 팀 테이블 간의 teammembership_association 다 대 다 관계를 사용합니다. 이 경우 Dataverse는 상호 교차 테이블을 지정하는 특성 및 tolink-entity 특성을 해결할 from 수 없습니다.
모든 특성 지정
<fetch top="2">
<entity name="systemuser">
<attribute name="fullname" />
<link-entity
name="teammembership"
from="systemuserid"
to="systemuserid"
intersect="true"
>
<link-entity
name="team"
from="teamid"
to="teamid"
link-type="inner"
alias="team"
>
<attribute name="name" />
</link-entity>
</link-entity>
</entity>
</fetch>
Dataverse 선택 허용
<fetch top="2">
<entity name="systemuser">
<attribute name="fullname" />
<link-entity name="team" alias="team">
<attribute name="name" />
</link-entity>
</entity>
</fetch>
링크 유형 옵션
반환된 레코드에 필터를 적용하는 데 사용합니다 link-type . 다음 표에서는 유효한 link-type 값을 설명합니다.
| 이름 | Description |
|---|---|
inner |
Default. 결과를 두 테이블에서 일치하는 값이 있는 행으로 제한합니다. |
outer |
일치하는 값이 없는 부모 요소의 결과를 포함합니다. |
any |
필터 요소 내에서 사용합니다. 연결된 엔터티에서 일치하는 행이 있는 부모 행으로 결과를 제한합니다.
관련 테이블에서 값을 필터링하는 데 사용하는 any 방법 알아보기 |
not any |
필터 요소 내에서 사용합니다. 연결된 엔터티에서 일치하는 행이 없는 부모 행으로 결과를 제한합니다.
관련 테이블에서 값을 필터링하는 데 사용하는 not any 방법 알아보기 |
all |
필터 요소 내에서 사용합니다. 일치하는 열 값이 있는 from 행이 링크 엔터티에 있지만 일치하는 행 중에서 이 링크 엔터티에 대해 정의된 추가 필터 를 충족하지 않는 부모 행 으로 결과를 제한합니다. 일치하는 모든 링크 엔터티 행이 몇 가지 추가 조건을 충족하는 부모 행을 찾으려면 추가 필터를 반전해야 합니다.
관련 테이블에서 값을 필터링하는 데 사용하는 all 방법 알아보기 |
not all |
필터 요소 내에서 사용합니다. 연결된 엔터티에서 일치하는 행이 있는 부모 행으로 결과를 제한합니다. 이 링크 형식은 이름에도 불구하고 동일합니다 any .
관련 테이블에서 값을 필터링하는 데 사용하는 not all 방법 알아보기 |
exists |
이러한 변형은 inner 성능상의 이점을 제공할 수 있습니다. 절에서 whereEXISTS 조건을 사용합니다. 결과에 부모 행의 여러 복사본이 필요하지 않은 경우 이를 사용합니다.
존재에 대해 자세히 알아보기 |
in |
이러한 변형은 inner 성능상의 이점을 제공할 수 있습니다. 절에서 whereIN 조건을 사용합니다. 결과에 부모 행의 여러 복사본이 필요하지 않은 경우 이를 사용합니다.
존재에 대해 자세히 알아보기 |
matchfirstrowusingcrossapply |
이러한 변형은 inner 성능상의 이점을 제공할 수 있습니다. 연결된 엔터티에서 일치하는 행의 단일 예제만 충분하고 결과에서 부모 행의 여러 복사본이 필요하지 않은 경우 이 형식을 사용합니다.
matchfirstrowusingcrossapply에 대해 자세히 알아보기 |
부모 요소
| 이름 | Description |
|---|---|
| 실체 | fetch 요소의 자식 요소인 쿼리의 '부모 엔터티'를 지정합니다. 하나의 엔터티만 허용됩니다. |
| link-entity | 엔터티 또는 링크 엔터티와 관련된 테이블을 조인하여 결과와 함께 더 많은 열을 반환합니다. |
자식 요소
| 이름 | 발생 | Description |
|---|---|---|
| all-attributes | 0 또는 1 | 각 행에 대한 null이 아닌 열 값이 모두 반환됨을 나타냅니다. 특성 요소를 추가하지 않는 것과 같습니다. 대부분의 경우 이 요소를 사용하지 않는 것이 좋습니다. |
| 속성 | 0개 이상 | 쿼리를 사용하여 반환할 엔터티 또는 링크 엔터티 의 열을 지정합니다. |
| 주문 | 0개 이상 | 결과의 행에 대한 정렬 순서를 지정합니다. |
| link-entity | 0개 이상 | 엔터티 또는 링크 엔터티와 관련된 테이블을 조인하여 결과와 함께 더 많은 열을 반환합니다. |
| 필터 | 0 또는 1 | 쿼리에 적용할 엔터티 또는 링크 엔터티 의 복잡한 조건을 지정합니다. |