问题描述
我正在尝试使用Web api查询,并且没有fetchxml,我能够构建此端点,但是结果集的行为类似于LEFT OUTER JOIN,但是我需要INNER JOIN。
new_demo
正在查找new_currentappointment
(最近的记录是从子网格列表中捕获的),new_currentappointment
正在查找new_user
。
我想要带有new_demo
的{{1}}列表,其中new_currentappointment_lookup
是过滤器。
new_user_lookup
结果是将系统中的每个https://crmdev.crm.dynamics.com/api/data/v9.1/new_demo?$select=new_attribute_one&$expand=new_currentappointment_lookup($select=new_attribute_two;$filter=_new_user_lookup_value eq <guid>)
都带入系统,但是扩展过滤器只会得到空值。如何从主结果中的扩展实体中消除过滤后的空结果?
new_demo
我正在寻找ASP.NET web api documentation中解释的结果,但找不到Dynamics CRM Web API的结果。还有其他简便的方法吗?
解决方法
来自Doc feedback: CRM web api expand along with filter - inner join or left join?
这是您的情况的等效查询:
{{webapiurl}}incidents?$select=title
&$expand=customerid_account($select=name;
$expand=primarycontactid($select=fullname;
$filter=contactid eq '384d0f84-7de6-ea11-a817-000d3a122b89'))
$ filter仅控制记录是否扩展。
这是两者之间的区别:
{
"@odata.etag": "W/\"31762030\"","title": "Sample Case","incidentid": "d3d685f9-cddd-ea11-a813-000d3a122b89","customerid_account": {
"name": "Fourth Coffee","accountid": "ccd685f9-cddd-ea11-a813-000d3a122b89","primarycontactid": {
"fullname": "Charlie Brown","contactid": "384d0f84-7de6-ea11-a817-000d3a122b89"
}
}
}
这:
{
"@odata.etag": "W/\"31762030\"","primarycontactid": null
}
}
请参见this example(Ctrl + F“展开的嵌套过滤器”),其中返回了所有人员,但仅扩展了与$ filter匹配的行程。
因此,扩展中的$ filter行为将仅控制是否返回详细信息。 这不是INNER JOIN行为。 您将需要使用FetchXml来实现。