如何构建三级对象的SOQL查询?获取Object2子对象的Id与名称
正确的SOQL写法说明
首先明确你的对象层级:主父对象 → 子对象 → Object2子对象,以下分两种场景给出正确写法:
场景1:从主父对象出发,关联查询全层级对象(含最底层的Object2子对象)
假设你的对象API名和关系名称如下(请替换为你实际的名称):
- 主父对象API名:
MainParent__c - 主父对象到子对象的子关系API名:
ChildObjects__r(子对象API名通常为Child__c,子关系名默认是Childs__r或自定义名称) - 子对象到Object2子对象的子关系API名:
Object2Childs__r(Object2子对象API名通常为Object2Child__c)
正确的嵌套子查询写法:
SELECT Id, Name, (SELECT Id, Name, (SELECT Id, Name FROM Object2Childs__r) FROM ChildObjects__r) FROM MainParent__c
这条语句会返回所有主父对象记录,同时带出每个主父关联的子对象,以及每个子对象关联的Object2子对象的Id和名称。
场景2:直接查询Object2子对象的Id和名称(无需关联上层对象)
如果不需要上层对象的数据,直接查询最底层的Object2子对象即可:
SELECT Id, Name FROM Object2Child__c
(将Object2Child__c替换为你实际的Object2子对象API名)
原查询的错误点
- SOQL子查询语法错误:子查询必须使用关系API名称(而非
child of object_2这种描述性写法),格式为(SELECT 字段 FROM 关系名称)。 - 子查询与父字段的分隔错误:子查询需要和父对象的字段用逗号分隔,原查询中缺少逗号。
- 对象名称不规范:
from child中的child应该是子对象的正式API名称(如Child__c),而非别名或描述词。
内容的提问来源于stack exchange,提问作者EmilyStreaks
相关产品推荐
相关产品推荐

