关于部门表的查询

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_27639721/article/details/77503645

目录

笔者在工作中需要经常使用一个员工的部门id查询出这个部门的所有的上级部门信息的需求, 并且要求是按照 A/B/C/D/

表结构

员工表结构: emp-id ,emp-name,dept-id
由于部门机构最少有4级,而且以后还有可能会增加,
部门表: 这里写图片描述
部门id ,部门名字 ,部门等级,第一级部门id,直属上级部门id,
ps: 直属上级id为0 的说明他的直属上级就是 第一级部门

目的

我需要 能直接使用 员工信息表中的 直属部门id查询出这个部门的所有的上级部门的信息
所以建立视图,方便查询
如图视图的效果
这里写图片描述
那么怎么写这个 视图
采用硬编码的方式:

 SELECT 
            concat_ws('/'::text, t7.sub_company_name, t6.department_name, 
            t5.department_name, t4.department_name, t3.department_name, 
            t2.department_name, t1.department_name) AS department_name, 
    t1.emp_dept_info_id 
   FROM ((((((tbl_emp_department_info t1
     LEFT JOIN tbl_emp_department_info t2 ON ((t2.emp_dept_info_id = ((t1.supdep_code)::text)::integer)))
     LEFT JOIN tbl_emp_department_info t3 ON ((t3.emp_dept_info_id = ((t2.supdep_code)::text)::integer)))
     LEFT JOIN tbl_emp_department_info t4 ON ((t4.emp_dept_info_id = ((t3.supdep_code)::text)::integer)))
     LEFT JOIN tbl_emp_department_info t5 ON ((t5.emp_dept_info_id = ((t4.supdep_code)::text)::integer)))
     LEFT JOIN tbl_emp_department_info t6 ON ((t6.emp_dept_info_id = ((t5.supdep_code)::text)::integer)))
     LEFT JOIN tbl_emp_sub_company_info t7 ON ((t7.sub_company_id = ((t1.sub_company_id)::text)::integer)))
展开阅读全文

没有更多推荐了,返回首页