使用在 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。 保留所有权利。 版权