您的当前位置:首页正文

Oracle中遍历查询下属部门信息

2023-11-09 来源:画鸵萌宠网

select de.dept_name,de.unified_code2 from cimsuser.t_org_department de3 start with de.unified_code= ‘DP00004‘4 connect by prior de.unified_code = de.parent_org_unified_code;

其中,DP00004是我需要查询的根部门,查询结果为遍历后的部门及其下属部门信息,执行步骤为:

第一步:从根节点开始;第二步:访问该节点;第三步:判断该节点有无未被访问的子节点,若有,则转向它最左侧的未被访问的子节,并执行第二步,否则执行第四步;第四步:若该节点为根节点,则访问完毕,否则执行第五步;第五步:返回到该节点的父节点,并执行第三步骤。

总之:扫描整个树结构的过程也即是中序遍历树的过程。

Oracle中遍历查询下属部门信息

标签:

小编还为您整理了以下内容,可能对您也有帮助:

oracle查询某公司及下属机构,并将层级显示出来

WITH tb AS
  ( SELECT 101 id , 1 aid , 'xxx公司' name FROM al
  UNION ALL
  SELECT 10021 , 101 , '财务部' FROM al
  UNION ALL
  SELECT 10022 , 101 , '销售部' FROM al
  UNION ALL
  SELECT 100030 , 10021 , '采购' FROM al
  UNION ALL
  SELECT 100030 , 10021 , '订购' FROM al
  )
SELECT level,
  id,
  name
FROM tb
  START WITH aid =1
  CONNECT BY prior id=aid
ORDER BY level;

追问好的 谢了

oracle查询某公司及下属机构,并将层级显示出来

WITH tb AS
  ( SELECT 101 id , 1 aid , 'xxx公司' name FROM al
  UNION ALL
  SELECT 10021 , 101 , '财务部' FROM al
  UNION ALL
  SELECT 10022 , 101 , '销售部' FROM al
  UNION ALL
  SELECT 100030 , 10021 , '采购' FROM al
  UNION ALL
  SELECT 100030 , 10021 , '订购' FROM al
  )
SELECT level,
  id,
  name
FROM tb
  START WITH aid =1
  CONNECT BY prior id=aid
ORDER BY level;

追问好的 谢了

oracle 多级查询(查询某级及所有下级的记录)?

select * from (select * from 表2 left join 表1 on 表1.分类=表2.物料分类) start with 上级分类=02 connect by prior 分类=上级分类

oracle 多级查询(查询某级及所有下级的记录)?

select * from (select * from 表2 left join 表1 on 表1.分类=表2.物料分类) start with 上级分类=02 connect by prior 分类=上级分类

如何用oracle查询出部门名称,部门员工数,部门平均工资,部门最低工资雇员的姓名,及工资等级

这是oracle中默认用户scott下的表。

本问题涉及到三张表,数据分别如下:

emp表:

dept表:

salgrade表:

按题目要求,sql语句如下:

select b.dname 部门名称,b.counts 部门员工数,b.avgsal 部门平均工资,b.minsal 部门最低工资,a.ename 姓名,c.grade 工资等级

from emp a,

(select b.deptno,b.dname,count(*) counts,round(avg(sal),2) avgsal,min(sal) minsal

from emp a,dept b,salgrade c

where a.deptno=b.deptno and a.deptno=b.deptno

and a.sal between c.losal and hisal

group by  b.deptno,b.dname) b,

salgrade c

where a.sal=b.minsal

and a.sal between c.losal and c.hisal

结果如图:

oracle里查询的题 列出所有“CLERK”办事员的姓名及其部门名称,部门的人数。(是部门的人数)求大神解决

额。。。,需求不是太清晰。部门人数?假如这个部门有6个人,有三个人是CLERK办事员,那么是显示3还是6。如果是6,那么就利用子查询关联,在子查询中group by,然后再关联。如果是3,那么只能查询两遍了,然后自连接。

另外,这个个人感觉不用左连接,用inner join就好。

如果资源允许的话,开窗函数也能解决这个问题,不过只能解决3,解决不了6,如果要的是6,还是要有一个子查询才行。

Top