1

FetchXML を使用してネストされた結合を実行しようとしています。リンクされた 2 つの子エンティティに対して内部結合を実行し、その結果に対して外部結合を実行して、親からすべての行を取得し、リンクされた 2 つの子エンティティが存在する場合はそのデータも取得します。childEntity2 にレコードがある場合、childEntity1 からのデータのみが必要ですが、常に親からのすべての行が必要です。

T-SQLでは、次のようになります

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

FetchXML では、すべてに link-type=outer を使用すると、期待どおりに親エンティティからすべての行が取得されますが、子エンティティのリンク タイプを内部に変更すると、結果セットに何もない行が含まれません。 2 つの子エンティティの結合から返されます。

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>
4

1 に答える 1