为了账号安全,请及时绑定邮箱和手机立即绑定

不要在 Dynamics 365 Web API 数据检索查询中返回重复项

不要在 Dynamics 365 Web API 数据检索查询中返回重复项

PHP
POPMUISE 2021-12-03 14:58:41
我正在使用以下查询参数通过 Dynamics 365 Web API (PHP) 检索所有活动成员资格记录。$params = array(    "$select" => "member_number,statuscode,statecode",    "$filter" => "statecode eq 1");这将返回所有活动成员资格记录(状态代码 1)。但是,由于特定成员可能拥有即将到期的成员资格和最近更新的成员资格(等等),单个实体可能会返回多个活动记录,从而使我的结果变得臃肿。我只需要知道一个实体是否处于活动状态一次,而不是六次。有没有办法排除重复记录,以便我只收到每个活动会员记录的一个实例?我正在寻找与DISTINCT在 SQL 查询中使用等效的 Dynamics 365 Web API 。
查看完整描述

3 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

虽然我不记得 WebAPI 有一个 Distinct 运算符,但FetchXML 有.


并且,您可以通过 API 运行 FetchXML


例如,没有Distinct:


https://myOrg.crm.dynamics.com/api/data/v9.0/contacts?fetchXml=

<fetch mapping='logical'>

  <entity name='contact'>

    <attribute name='fullname' />

    <filter>

        <condition attribute='fullname' operator='eq' value='Nick Saban'/>

    </filter>

  </entity>

</fetch>


返回:


{

   "@odata.context":"https://myOrg.crm.dynamics.com/api/data/v9.0/$metadata#contacts(fullname,contactid)",

   "value":[

      {

         "@odata.etag":"W/\"175969918\"",

         "fullname":"NICK SABAN",

         "contactid":"ca338867-8831-e511-8103-c4346bac6974"

      },

      {

         "@odata.etag":"W/\"187905023\"",

         "fullname":"NICK SABAN",

         "contactid":"fff12a11-ef85-e511-810a-fc15b4281ce0"

      }

   ]

}


与Distinct:

https://myOrg.crm.dynamics.com/api/data/v9.0/contacts?fetchXml=

<fetch mapping='logical' distinct='true'>

  <entity name='contact'>

    <attribute name='fullname' />

    <filter>

        <condition attribute='fullname' operator='eq' value='Nick Saban'/>

    </filter>

  </entity>

</fetch>


返回:


{

   "@odata.context":"https://myOrg.crm.dynamics.com/api/data/v9.0/$metadata#contacts(fullname)",

   "value":[

      {

         "fullname":"NICK SABAN"

      }

   ]

}


查看完整回答
反对 回复 2021-12-03
?
动漫人物

TA贡献1815条经验 获得超10个赞

我不是来自 php 背景,但我会尝试。


Distinct只能在 FetchXML 查询中使用,fetchxml 可以与 web api 一起使用。


我可以找到以下示例 - AlexaCRM 工具包的在线参考。


$fetchXML = <<<FETCHXML

<fetch mapping="logical" distinct="true"> 

    <entity name="new_membership">

        <attribute name="member_number" /> 

    </entity>

</fetch>

FETCHXML;


$fetchExpression = new \AlexaCRM\Xrm\Query\FetchExpression( $fetchXML );

$collection = $client->RetrieveMultiple( $fetchExpression );


查看完整回答
反对 回复 2021-12-03
?
千万里不及你

TA贡献1784条经验 获得超9个赞

由于 Dynamics 支持 ODATA 4.0,您可以通过以下方式使用 $apply 进行查询:


$params = array(

    "$apply" => "groupby((member_number))",

    "$filter" => "statecode eq 1"

);

此查询将返回不同的 JSON,但在您的实体中包含不同的“member_numbers”集合。希望能帮助到你。


这个答案来自这个问题。请查看详细信息。


查看完整回答
反对 回复 2021-12-03
  • 3 回答
  • 0 关注
  • 242 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信