课程章节介绍
同学们,我们来看一下SOQL查询里的SELECT声明,它到底能有多灵活。
简单来说,SELECT后面可以放任何合法的SOQL查询。这里面就包括通过外键去跨越对象的关系,还有处理父子记录之间的连接。
怎么访问外键关联的字段呢?就用咱们很熟悉的点号,像访问对象的属性那样,顺着关系一路点下去。比如你要查一个联系人所属客户的名称,直接写 `Contact.Account.Name` 就行了,这种跨对象的导航用点号特别直观。
那父子关系又是怎么回事?在Salesforce里,sObject之间的父子关系,也可以直接在查询里用子查询的方式来体现。怎么操作呢?你在SELECT子句里,用一对小括号把一个完整的子查询包起来,就像是主查询里嵌了一个小的查询。这个子查询去查子记录,通常跟主记录的那个子对象集合有关。
举个例子,如果你在查客户,想看看它下面所有的联系人,就可以这么写:`SELECT Name, (SELECT LastName FROM Contacts) FROM Account`。看,括号里的子查询返回的就是当前客户下相关的联系人记录,结果会放在一个列表里。
这里有一个很实用的小技巧:如果你把子查询的结果限制成只返回一条记录,比如用了`LIMIT 1`,那这个子查询的结果就可以直接赋值给一个单独的sObject变量,而不是一个列表。这样你就不用去遍历列表、取第一个元素了,代码写起来很清爽。
也就是说,当子查询明确只返回一条记录的时候,Salesforce的结果类型就不再是列表,而是一个可以直接用的单条对象。
好了,这一小块就讲到这里,大家记住核心点就行:点号导航外键,括号处理父子,限制一条时可单对象赋值。很简单,对吧?
关键词
Apex
Salesforce
Developer Guide