使用在 FetchXML 的左外部联接来查询“不在”记录。

 

发布日期: 2017年1月

适用于: Dynamics 365 (online),Dynamics 365 (on-premises),Dynamics CRM 2016,Dynamics CRM Online

您可以在 FetchXML 中使用左外部联接,以执行对联接表筛选的查询,例如查找在前两个月没有任何市场活动的所有联系人。 此类查询的另一种常用方法是查找“不在”集合中的记录,例如下列情形:

  • 查找没有任务的所有潜在顾客

  • 查找没有联系人的所有客户

  • 查找有一个或多个任务的所有潜在顾客

左外部联接返回满足第一个输入与第二个输入的联接的每一行。 它还返回在第二行中输入中没有匹配行的第一个输入中的所有行。 第二个输入中的不匹配行作为 null 值返回。

您可以在 FetchXML 中通过使用 entityname 属性作为条件运算符来执行左外部联接。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。 保留所有权利。 版权