发布网友 发布时间:2022-04-25 05:24
共1个回答
热心网友 时间:2022-04-11 01:26
为什么你那么喜欢用left join?、
我们首先来看表表间的关系,看看需不需要left join。
按照你的表格意思?
t_emp.name='张三'
的入职时间,团队名称和团队所属部门名称。
一个员工,不管何时入职都有一个编号,和入职时间的,都有所属团队和所属部门。
应该不会存在一个员工,没有入职时间,没有编号,不存在所属团队和部门的情况吧。
所以个人感觉觉得你这里的多次左右连接其实是增加了查询的成本,很多应该是没有必要的,直接用hash连接应该就可以。。
当然我并不知道你的业务结构,可能你的设计没问题,如果这样的话,上面的就当我没说。
SELECT t_emp.name 员工名字,t_hr.Indate 入职日期,t_dept.name 团队名称,dept.name 部门名称 from t_emp,t_hr,t_dept,t_dept dept where t_emp.name='张三' and t_emp.H_num=t_hr.num and t_emp.d_num=t_dept.num and t_dept.d_num=dept.num
其实你上面的查询也可以,再套一层就行了,你已经查到所属部门了,在你的结果中加一个t_dept.d_num,然后外面再套一层,让这个t_dept.d_num=t_dept.num就能找到所属部门了。追问我只是将问题通过员工/部门/人事资料这个例子表达出来;事实上需求不是这个;
ok,我试着按照你说的将查询结果再进行一次查询;
tks
追答呵呵,不知道你是什么数据库,我仅仅只会一点oracle而已,帮不到什么大忙的,再说我的qq已经有好几年没用了,早就忘到爪哇过了。