SOQL在多个对象的关联查询

  • 引言
  • 重要的reference类型
  • 代码示例

引言

最开始接触SOQL语句的时候,其实觉得和java等里的SQl没有什么区别,但是当真正在多个对象上进行查询时就不再是java中的写法了。java中的from后面只能跟一个对象(sObject)然后就是where语句和order什么的(和java类似),那怎么进行多对象的关联查询呢?

重要的reference类型

在apex中,如果对象与对象之间有关联,可以look-up字段(比如一个职位申请(job Application)只有一个候选人(Candidate),在job application上可以建立一个loopup字段到Candidate,这个字段是一个reference引用类型);同样也可以创建一个master-details字段(比如一个job application可能会被创建多个评论(Review),那么我们可以在Review上建立一个master-detail字段指向Job Application,同理这个字段也是一个reference引用类型)。其实这两个字段也就相当于数据库表中的外键来建立表与之间的联系。
因此只要是对象之间有reference进行关联,我们就可以使用SOQL进行多对象(也就是多表查询)。你总不会还问那对象之间没有关联怎么查呢?既然都没有关联,说明也不存在什么联系(也就没有所谓的外键),那查询的意义又在哪呢?总得有个对象之间相等的条件吧。

代码示例

[SELECT Position__r.Id, Position__r.status__c,Position__r.Name,Id,Average_Review_Score__c,Candidate__r.City__c, Candidate__r.Email__c FROM Job_Application__c WHERE Position__r.Name Like :positionParameter AND Candidate__r.Years_of_Experience__c >= :experienceYear ORDER BY Average_Review_Score__c DESC]

上述代码中主要对象Job Application,其与Position和Candidate都有reference类型的字段。代码会有不完整的地方,也sql多表查询的区别就是

  • from后跟的对象只能有一个,并且要加上**__c后缀**
  • 要查询其他对象时,将其他对象的后缀改为__r,要查询该对象上的字段就是用object__r.field__c形式进行查询
  • where等语法类似,不再赘诉

本来是开发的时候想自己解决这个问题,由于刚刚接触,对google使用不够熟练,还是花费了一些时间。如有解释不清楚或者错误的地方,欢迎留言讨论,共同学习!Good night!

Apex——SOQL在多个对象上进行关联查询相关推荐

  1. Hibernate Criteria对象详解(条件查询)

    Hibernate Criteria对象详解 2014-9-1 16:21| 发布者: 传智特刊| 查看: 7290| 评论: 0 摘要: Hibernate框架是目前JavaEE软件开发的企业主流框 ...

  2. php数组包含对象吗,在包含数组的PHP对象上调用方法

    我有一个名为"食物"的PHP类.该类的内部数据结构是一个Array. class Food { public $dataArray;// = array(); public $si ...

  3. excel html modify,在Excel 2010中修改Series对象上的Z-index(Modify Z-index on Series object in Excel 2010)...

    在Excel 2010中修改Series对象上的Z-index(Modify Z-index on Series object in Excel 2010) 我正在使用excel 2010. 我有一个 ...

  4. 【Groovy】MOP 元对象协议与元编程 ( 使用 Groovy 元编程进行函数拦截 | 使用 MetaClass 进行方法拦截 | 对象上拦截方法 | 类上拦截方法 )

    文章目录 一.使用 MetaClass 进行方法拦截 1.使用 MetaClass 在单个对象上进行方法拦截 2.使用 MetaClass 在类上进行方法拦截 二.完整代码示例 1.对象方法拦截 2. ...

  5. 在js对象上绑定js数组原生方法

    在js对象上绑定js数组原生方法 在js对象上绑定数组方法会给当前对象添加一个lenght:0属性 例: var o = {}; [].pop.call(o) console.log(o)//返回结果 ...

  6. C++(三)——类和对象(上)

    构造函数 #include<iostream> using namespace std;class Person { public:int age;Person() {cout <& ...

  7. boost::hana模块在无限可迭代对象上测试 hana::index_if

    boost::hana模块在无限可迭代对象上测试 hana::index_if 实现功能 C++实现代码 实现功能 boost::hana模块在无限可迭代对象上测试 hana::index_if C+ ...

  8. 绑定到对象上的copyWithin方法

    对于在数组上使用copyWithin方法应该都很熟悉,但是绑定到对象上呢? [].copyWithin.call({length: 5, 3: 1}, 0, 3) I just began to le ...

  9. Spring Data MongoDB级联保存在DBRef对象上

    默认情况下, Spring Data MongoDB不支持对带有@DBRef注释的引用对象的级联操作,如引用所述 : 映射框架不处理级联保存 . 如果更改了Person对象引用的Account对象,则 ...

最新文章

  1. 机器人3·15 | 赛迪「机器人国评中心」揭示机器人产品质量6大痛点!
  2. cudnn.h: No such file or directory
  3. 如何利用office绘制施工进度计划横道图?
  4. ​linux 系统出现Give root password for maintenance 问题
  5. Linux删除整行命令
  6. SpringCloud(第 054 篇)简单 Quartz-Cluster 微服务,采用注解配置 Quartz 分布式集群...
  7. 【noip模拟赛3】编码
  8. java 打印abcd_用JAVA编程统计字符串ABCD123!@#$%ab中大写字母、小写字母、数字、其它字符的个数并打印出来...
  9. 神奇的不拆封读信,MIT透视技术登上nature子刊
  10. java_js_json_日期格式化
  11. O(n)复杂度求没有出现的数字(leetcode448)
  12. 【C语言】中的stdbool.h头文件
  13. 2016 计算机控制技术试题,计算机控制技术试题
  14. matlab中角度,利用 matlab 计算各种角度
  15. 计算机专业 在职跨英语,英语在职研究生跨专业可以吗?
  16. 如何使用JGIT在远程仓库获取提交详情记录
  17. 【PS4开发】如何通过unity3d发布ps4应用
  18. css单标签,自己练习的css动画(单标签)
  19. HTML5期末大作业:游戏设计网站设计——游戏介绍(5页) 大学生游戏网页设计作业模板下载 网游网页设计作业成品 静态HTML手游网页制作下载_网页设计代码
  20. PMBOK组织结构及特点-联络员、协调员

热门文章

  1. 有关opencv的学习(17)—形态学滤波器检测边缘和角点
  2. Bat脚本日期时间获取
  3. ssm毕设项目理发店预约系统wc712(java+VUE+Mybatis+Maven+Mysql+sprnig)
  4. 注意!华为开始招募了
  5. 业务框架之个性化监控方案
  6. 【MongoDB】$in和$eq操作数
  7. 一句话生成视频(python)
  8. linux-ssh远程加密连接
  9. [HDU] 1175 连连看 - 剪枝优化后的性能飙升
  10. 地下城守护者2 无限魔法修改器