如何在SOQL中关联Account、Contact与AccountContactRelation并合并字段?
解决方案
要将AccountContactRelation(简称ACR)的IsDirect、LastModifiedDate等字段合并到对应Contact记录中,你需要从AccountContactRelation对象发起查询,关联Account和Contact的字段,同时过滤目标Account的ID。这样每条查询结果会直接绑定Contact信息与对应的ACR关联字段。
正确的SOQL语句
SELECT Account.Id, Account.Name, Contact.Id, Contact.FirstName, Contact.LastName, IsDirect, LastModifiedDate FROM AccountContactRelation WHERE AccountId = 'XXXX'
说明
- ACR作为连接Account和Contact的 junction object,本身存储了
AccountId、ContactId以及你需要的关联字段。从ACR发起查询可以直接关联获取两端对象的字段,返回的每条记录都会将Contact详情与对应的ACR字段整合在一起,完全满足你“每个Contact记录包含对应关联字段”的需求。 - 如果你需要保持以Account为根的结构(即Account对象下嵌套包含ACR字段的Contact列表),SOQL本身无法直接实现这种嵌套关联。这种情况下,你可以先分别查询Account的Contacts子查询和Account的AccountContactRelations子查询,再通过代码逻辑(比如根据
ContactId匹配)将ACR字段合并到对应的Contact对象中。
内容的提问来源于stack exchange,提问作者R877
相关产品推荐
相关产品推荐

