关于部门表的查询

来源:互联网 发布:淘宝怎么上架商品 编辑:程序博客网 时间:2024/06/06 07:40

目录

笔者在工作中需要经常使用一个员工的部门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)))
阅读全文
0 0