where 条件中的 a和b。不是都代表emp表吗。这个where条件有什么用。a.hiredate和b.hiredate不是应该相等吗
5条回答 默认 最新
- leaf_cq 2022-04-12 16:48关注
1、首先需要了解emp表的表结构:从SQL中可以看出,张表中存储了所有员工的信息,包含普通员工和领导,其中普通员工在管理者字段 mgr 中存有其领导的 员工编号empno,这样,通过mgr可以查询出指定领导的所有下属员工信息
2、其次了解需求:总结一句话:查询比领导还要先进公司的老板凳
3、然后开始组织逻辑:就是将所有员工(中层领导可能也有其上级领导)的雇用时间与其领导(mgr对应的员工的雇用时间)进行比对,将其比领导的雇用时间更早的员工提取出来,然后按要求输出列(这还需要关联一下部门表)
4、实现:通过JOIN将emp表【自】关联,让员工与其对应的领导一一对应到一行中(通过关联条件ON a.mgr = b.empno实现),得到一个关联结果集,然后在WHERE中实现对这个组合结果中的数据通过条件 a.hiredate < b.hiredate 进行过滤,得到的结果集就是需要的结果集,最后再关联一下部门表,提取一下部门信息即可
5、针对楼主的疑问:
首先,a、b不是在WHERE中,而是在FROM中定义的,虽然都是emp表,但通过关联条件 a.mgr = b.empno 进行了两个表的对照过滤,即先从a表中提取所有mgr有值的员工数据,再从b表中查找对应的empno与之(mgr)相等的领导数据,将两条数据组合成一条数据(其中包含该员工的所有emp表结构数据和其领导的emp表结构数据),所有满足上述条件的数据会缓存到内存中(这里暂时忽略了部门表的关联)。
然后通过WHERE条件来进行过滤:如上所述,缓存数据中的一行数据中,即有员工的数据也有其领导的数据,这时的a.hiredate就是提取员工的雇用时间,b.hiredate就是其对应领导的雇用时间,让a.hiredate < b.hiredate 就能过滤掉不满足条件的记录,得到需求所希望得到的结果集
最后,按需求关联部门表输出结果集即可。不知道这样描述你能明白不……
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 组策略中的计算机配置策略无法下发
- ¥15 如何绘制动力学系统的相图
- ¥15 对接wps接口实现获取元数据
- ¥20 给自己本科IT专业毕业的妹m找个实习工作
- ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
- ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
- ¥50 mac mini外接显示器 画质字体模糊
- ¥15 TLS1.2协议通信解密
- ¥40 图书信息管理系统程序编写
- ¥20 Qcustomplot缩小曲线形状问题