左外部結合を FetchXML で使用して "存在しない" 記録をクエリする

 

公開日: 2017年1月

対象: Dynamics 365 (online)、Dynamics 365 (on-premises)、Dynamics CRM 2016、Dynamics CRM Online

FetchXML の左外部結合を使用して、結合の表をフィルタリングするクエリを実行できます。たとえば、過去 2 か月間のキャンペーン活動がない取引先担当者をすべて検索できます。 このクエリタイプの別のよくある使用法では、次のような場合には存在しないといった、あるセットには存在しないレコードを検索するクエリです。

  • タスクのないすべての潜在顧客を検索する

  • 取引先担当者のないすべての取引先企業を検索する

  • 1つか、2つのタスクがあるすべての潜在顧客を検索する

左外部結合では、2 番め入力で最初の入力の結合を満たす各列を返します。 また、2 番目入力で一致する列がない最初の入力列を返します。 2 番めの一致しない列が null 値として返されます。

条件演算子として entityname 属性を使用して、FetchXML の左外部結合を実行できます。entityname 属性は、条件、フィルターおよび入れ子フィルターで有効です。

プログラムで左外部結合を使用してクエリを作成し、 RetrieveMultipleRequest を使用してクエリを実行し、SavedQuery レコードを作成してクエリを保存できます。 Web アプリケーションの高度な検索または保存済みクエリ エディターに左外部結合が含まれている保存済みクエリを開き、実行して結果を表示できますが、一部のエディタ機能は無効化されます。 これらのエディターでは、返される列を変更するなどのクエリの変更はできますが、エディタは左外部結合の変更はサポートしていません。

例: 潜在顧客のないすべての取引先企業を検索する

次に、FetchXML でのクエリの作成方法を示します。

<fetch mapping='logical'>
 <entity name='account'>
  <attribute name='name'/>
  <link-entity name='lead'
               from='leadid'
               to='originatingleadid'
               link-type='outer'/>
  <filter type='and'>
   <condition entityname='lead'
              attribute='leadid'
              operator='null'/>
  </filter>
 </entity>
</fetch>

例: エイリアス名を使用して、タスクのないすべての潜在顧客を検索する

次に、FetchXML でのクエリの作成方法を示します。

<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="true">
  <entity name="lead">
    <attribute name="fullname" />
    <link-entity name="task" from="regardingobjectid" to="leadid" alias="ab" link-type="outer">
       <attribute name="regardingobjectid" />
    </link-entity>
    <filter type="and">
        <condition entityname="ab" attribute="regardingobjectid" operator="null" />
    </filter>
  </entity>
<fetch/>

これは次のSQLと等価です。

SELECT lead.FullName
FROM Leads as lead
LEFT OUTER JOIN Tasks as ab
ON (lead.leadId  =  ab.RegardingObjectId)
WHERE ab.RegardingObjectId is null

関連項目

FetchXML を使用したクエリの構築
サンプル: FetchXML での集計の使用
FetchXML の使用によるクエリの作成
サンプル: 保存済みクエリの検証および実行

Microsoft Dynamics 365

© 2017 Microsoft. All rights reserved. 著作権