我有一个表是存的部门结构,字段为“部门id”,“部门名称”,“上级部门ID”,部门的层级是无限延伸的,每级部门ID前面几位是上级部门的ID。例如部门“01”下的部门为“0101”,“0102”.....
我现在要根据一个部门列表来检索数据,需要将这个部门列表中的部门的上级部门与下级部门都检索出来,这个语句怎么写好?例如我的表里面有:
部门id 上级部门id
01 0
02 0
03 0
0101 01
0102 01
0103 01
010101 0101
010102 0101
010201 0102
010202 0102
0201 02
0202 02
020101 0201
020102 0201
020201 0202我现在有一个部门列表为("0102","0202"),那么我要得到的数据为:部门id 上级部门id
01 0
02 0
0102 01
010201 0102
010202 0102
0202 02
020201 0202有一种写法就是:where 部门id like '0102%' or '0102' like 部门id||'%' or 部门id like '0202%' or '0202' like 部门id||'%'
这样写太麻烦了,而且我的部门列表里面有可能有很多个部门ID,有没有简单点的写法?
我现在要根据一个部门列表来检索数据,需要将这个部门列表中的部门的上级部门与下级部门都检索出来,这个语句怎么写好?例如我的表里面有:
部门id 上级部门id
01 0
02 0
03 0
0101 01
0102 01
0103 01
010101 0101
010102 0101
010201 0102
010202 0102
0201 02
0202 02
020101 0201
020102 0201
020201 0202我现在有一个部门列表为("0102","0202"),那么我要得到的数据为:部门id 上级部门id
01 0
02 0
0102 01
010201 0102
010202 0102
0202 02
020201 0202有一种写法就是:where 部门id like '0102%' or '0102' like 部门id||'%' or 部门id like '0202%' or '0202' like 部门id||'%'
这样写太麻烦了,而且我的部门列表里面有可能有很多个部门ID,有没有简单点的写法?
from 表
start with 上级部门id='0'
connect by piror 部门id= 上级部门id
那我的where语句怎么写呢?
from 表
start with 部门id in("0102","0202")
connect by prior 上级部门id = 部门id
union
select *
from 表
start with 部门id in("0102","0202")
connect by prior 部门id= 上级部门id