如何使用 fetch 进行过滤以获得准确的结果?

How to filter using fetch to get accurate results?

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

检查我的结果后,我发现我得到的所有帐户至少有 1 个未打开的电话,但我需要获得 所有 个已连接电话的帐户未打开(甚至不能有 1 个处于打开状态)是否可以通过获取来完成?

** 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>";

您要查找的是不匹配查询。这可以在使用 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>

第二个查询:迭代并传递第一个查询帐户结果集作为 <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