如何使用fetch过滤来获得准确的结果?

时间:2018-05-14 14:33:05

标签: filter dynamics-crm fetch dynamics-crm-2016 fetchxml

我需要在state 而不是 open中获取所有有电话的帐户,因此我创建了一个关于fetch的查询并获得了一些结果。

在查看我的搜索结果后,我发现我的所有帐户中至少有1个未打开的电话,但我需要获取其已连接的电话的全部未开启的帐户(可以&# 39; t在打开状态下甚至有1)是否可以通过提取来进行?

** by NOT OPEN我指的是已取消或已完成状态。

这是我的获取查询:

@"<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='true'>
  <entity name='account'>
    <attribute name='name' />                                        
    <order attribute='accountamount' descending='true' />
    <link-entity name='phonecall' from='regardingobjectid' to='accountid' alias='ab'>
      <filter type='and'>
        <condition attribute='statecode' operator='ne' value='0' />
      </filter>
    </link-entity>
  </entity>
</fetch>";

1 个答案:

答案 0 :(得分:0)

您正在寻找的是Unmatch查询。这可以使用fetchxml在2个查询中实现。

首次查询:您必须通过打开的电话拨打所有帐户。

<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="true" >
  <entity name="account" >
    <attribute name="accountid" />
    <order attribute="accountamount" descending="true" />
    <link-entity name="phonecall" from="regardingobjectid" to="accountid" alias="ab" >
      <filter type="and" >
        <condition attribute="statecode" operator="eq" value="0" />
      </filter>
    </link-entity>
  </entity>
</fetch>

第二次查询:迭代&amp;将第一个查询帐户结果集传递为<value>,如下所示,以过滤掉它们。

<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="true" >
  <entity name="account" >
    <attribute name="name" />
    <attribute name="primarycontactid" />
    <attribute name="telephone1" />
    <attribute name="accountid" />
    <order attribute="name" descending="false" />
    <filter type="and" >
      <condition attribute="accountid" operator="not-in" >
        <value><GUID of ACCOUNT1 with OPEN PHONECALL></value>
        <value><GUID of ACCOUNT2 with OPEN PHONECALL></value>
        <value><GUID of ACCOUNT3 with OPEN PHONECALL></value>
      </condition>
    </filter>
  </entity>
</fetch>

Read for idea