Dynamics 365 We API ODATA语法根据父记录查询子记录,根据子记录查询父记录(附上根据团队,队列名称查成员)

微软动态CRM专家罗勇 ,回复333或者20190508可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!

先举个N:N关系的例子。这里以根据团队的名称查找其所有团队成员的主要邮箱为例。用Web API ODATA语法执行fetchxml比较容易想到,如下:

https://luoyongdemo.api.crm.dynamics.com/api/data/v9.1/systemusers?fetchXml=<fetch mapping='logical' no-lock='true'><entity name='systemuser'><attribute name='internalemailaddress' /><link-entity name='teammembership' from='systemuserid' to='systemuserid' visible='false' intersect='true'><link-entity name='team' from='teamid' to='teamid' alias='ab'><filter type='and'><condition attribute='name' operator='eq' value='B2C Supervisor Team' /></filter></link-entity></link-entity></entity></fetch>

也可以使用如下的查询来解决,你可能会问下面查询语法中的 teammembership_association 从哪儿来,就是该实体的N:N关系的 Schema Name。
https://luoyongdemo.api.crm.dynamics.com/api/data/v9.1/teams?$select=name&$expand=teammembership\_association($select=internalemailaddress)&$filter=name eq 'B2C Supervisor Team'

还可以使用两次查询来解决,如下,当然这个方法比较笨。

https://luoyongdemo.api.crm.dynamics.com/api/data/v9.1/teams?$filter=name eq 'B2C Supervisor Team'

https://luoyongdemo.api.crm.dynamics.com/api/data/v9.1/teams(
e4336d83-f45f-e911-a830-000d3a375590)/teammembership_association?$select=internalemailaddress

如果换成根据队列(Queue)的名称来查看队列成员呢,分别如下:

https://luoyongdemo.api.crm.dynamics.com/api/data/v9.1/systemusers?fetchXml\=<fetch mapping='logical' nolock='true'><entity name='systemuser'><attribute name='internalemailaddress' /><link-entity name='queuemembership' from='systemuserid' to='systemuserid' visible='false' intersect='true'><link-entity name='queue' from='queueid' to='queueid' alias='ac'><filter type='and'><condition attribute='name' operator='eq' value='DS Approver IDG' /></filter></link-entity></link-entity></entity></fetch>

https://luoyongdemo.api.crm.dynamics.com/api/data/v9.1/queues?$select=name&$expand=queuemembership\_association($select=internalemailaddress)&$filter=name eq 'DS Approver IDG'

如果是1:N关系,可以参考如下语法,注意父实体一定要指定至少一个列,否则会把父实体的所有字段查出来,很浪费性能。$expand后面的名称也是1:N关系的架构名称。

https://luoyongdemo.api.crm.dynamics.com/api/data/v9.1/new\_returnreqs?$select=new\_name&$expand=new\_new\_returnreq\_new\_returnreqapprovalhist\_ReturnRequest($select=new\_name)&$filter=contains(new\_name,'RETURN-2019')

如果已知父记录的ID,则还有如下语法可以使用:
当仅仅需要返回子记录的ID的话,有简单语法如下:

https://luoyongdemo.api.crm.dynamics.com/api/data/v9.1/new\_returnreqs(709c2ad3-7d71-e911-a82b-000d3a365662)/new\_new\_returnreq\_new\_returnreqapprovalhist\_ReturnRequest/$ref

当仅仅需要返回子记录数量的话,有如下简单语法:

https://luoyongdemo.api.crm.dynamics.com/api/data/v9.1/new\_returnreqs(709c2ad3-7d71-e911-a82b-000d3a365662)/new\_new\_returnreq\_new\_returnreqapprovalhist\_ReturnRequest/$count

在查询记录的时候可以顺路查出其某个查找字段对应查找记录的字段信息吗?答案是可以。如下实例,这里使用查找字段的架构名称:

https://luoyongdemo.api.crm.dynamics.com/api/data/v9.1/new\_returnreqapprovalhists?$select=new\_name&$expand=new\_ReturnRequest($select=new\_name,new\_ordernumber)&$filter=contains(new\_name,'2019')

但是对于标准的CreatedBy字段却要使用逻辑名称,奇怪:

https://luoyongdemo.api.crm.dynamics.com/api/data/v9.1/new\_returnreqapprovalhists?$select=new\_name&$expand=createdby($select=fullname)&$filter=contains(new\_name,'2019')

点赞
收藏

评论区

加载中...

相关推荐

MySQL 通用查询日志与慢查询日志

MySQL中的日志包括:错误日志、二进制日志、通用查询日志、慢查询日志等等。这里主要介绍下比较常用的两个功能:通用查询日志和慢查询日志。1)通用查询日志:记录建立的客户端连接和执行的语句。2)慢查询日志:记录所有执行时间超过long

java面试之n+1问题

在一对多或者多对多的时候。如果通过一的一方取获得多的一方的数据。除了第一次查询表的数据以外。每获得一条多的一方的数据就查询一次。如:通过学生表的记录查询成绩表的记录。一个学生就查询一次,50个学生就查询50次。如果需要查询50个学生的成绩,需要查询数据库的次数为第一次查询学生的记录50次查询成绩的记录。这个情况我们成为N1.//需求:

oracle的start with connect by prior如何使用

oracle的startwithconnectbyprior是根据条件递归查询"树",分为四种使用情况: 第一种:startwith子节点ID'...'connectbyprior子节点ID父节点IDselectfrommdm_organizationostartwitho.org_code'

Dynamics 365利用HTML页面创建实体记录并同步上传附件

我是微软Dynamcis365&PowerPlatform方面的工程师罗勇,也是2015年7月到2018年6月连续三年DynamicsCRM/BusinessSolutions方面的微软最有价值专家(MicrosoftMVP),欢迎关注我的微信公众号MSFTDynamics365erLuoYong,回复342或者20190605可方便获取本

Java笔试面试总结—try、catch、finally语句中有return 的各类情况

前言之前在刷笔试题和面试的时候经常会遇到或者被问到trycatchfinally语法块的执行顺序等问题,今天就抽空整理了一下这个知识点,然后记录下来。正文本篇文章主要是通过举例的方式来阐述各种情况,我这里根据trycatchfinally语法块分为两种大情况讨论:trycatch语法块和trycat

mysql——GROUP BY和HAVING

GROUPBY语法可以根据给定数据列的每个成员对查询结果进行分组统计,最终得到一个分组汇总表。select子句中的列名必须为分组列或列函数,列函数对于groupby子句定义的每个组返回一个结果。某个员工信息表结构和数据如下:  id  name  dept  salary  edlevel     hiredate   1  张