如何通过Salesforce REST API获取自身或关联服务近两日修改的合同?
Salesforce SOQL 查询满足条件的合同(含关联服务更新)
完全不用反向查询,直接用SOQL的现有语法就能实现你的需求,两种可行方案如下:
方案一:使用EXISTS子句
EXISTS可以检查合同是否存在符合条件的关联包含服务,结合主查询的自身修改条件,就能精准筛选出目标合同:
SELECT LastModifiedDate, Id, Name, (SELECT LastModifiedDate, Id, Name FROM Included_Services__r WHERE LastModifiedDate > 2023-08-17T00:00:00Z) FROM Contract__c WHERE LastModifiedDate > 2023-08-17T00:00:00Z OR EXISTS ( SELECT Id FROM Included_Services__r WHERE LastModifiedDate > 2023-08-17T00:00:00Z )
这个查询会返回两类合同:
- 自身在过去两天内修改的合同
- 自身未修改,但存在过去两天内修改的关联包含服务的合同
同时子查询只会返回符合条件的包含服务数据,不会出现空的关联结果集,因为EXISTS已经确保了这类合同存在符合要求的关联服务。
方案二:用子查询匹配合同ID
通过子查询获取所有近两天修改的包含服务对应的合同ID,再和主查询的自身修改条件做逻辑或:
SELECT LastModifiedDate, Id, Name, (SELECT LastModifiedDate, Id, Name FROM Included_Services__r WHERE LastModifiedDate > 2023-08-17T00:00:00Z) FROM Contract__c WHERE LastModifiedDate > 2023-08-17T00:00:00Z OR Id IN ( SELECT Contract__c -- 这里填写包含服务对象中关联合同的外键字段API名 FROM Included_Service__c -- 这里填写包含服务对象的API名称(不是关系名) WHERE LastModifiedDate > 2023-08-17T00:00:00Z )
这种方式同样能达到需求,而且返回的数据量可控,不会因为反向查询导致数据膨胀。
内容的提问来源于stack exchange,提问作者Thallius
相关产品推荐
相关产品推荐

