sql如何取某个部门的所有子部门?

sql如何取某个部门的所有子部门?,第1张

这个就涉及到层,我告诉你具体做法

增加两个字段叫layer(层数)和layerorder(层次序)

id为A且在第一层的layer=1,layerorder=000A(看你ID的位数而定)

id为B且在第二层parentid为A的,layer=2,layerorder=000A000B

id为C且在第三层parentid为B的,layer=3,layerorder=000A000B000C

依次类推

如果知道某部门ID想搜索子部门,那只需要

select id ,name from XX where layerorder like 某部门ID+"%"

这样就可以把子部门全搜索出来,还可以加上layer作为搜索条件限制只要第几层的,具体实现你可以自己摸索下~~

需要对部门表(数据库表)进行设计,在表中增加一个"parentDepartId"。

最上层的部门的parentDepartId=0,其他的部门的parentDepartId是他的上级部门的departId。

这样就形成了树形结构,你通过一个部门的departId去对应其他部门的parentDepartId,就可以找到对应关系了。

不建议做单表自联结,还是用单独的映射表比较好

比如

部门表

ID 名称

部门映射表

父ID 子ID

然后通过映射表内联父子来递归出树形结构。

无分无码


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9627749.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存