部门表中任意两条记录之间的上下级关系判断

mysql数据库中部门表department,给出任意两条记录的id,如何判断这两条记录的上下级关系啊?

怎么实现或者有什么好的思路啊?

比如说做如下编码:
一级部门
01
0101
010101
010102
010103
0102
010201
010202
010203
0103
0104
010401
010402
等待,就像这样的将部门编码自动编排的非常有规律,这样是不是子节点like一下就可以了,上次我们做了一个财务软件,就是这么做的!

1、可以考虑在部门表中即一个int字段,用于保存部门的层级,每次新增一个部门时,该部门的层级是上一个部门层级+1

加一个级别的字段或者单独的表??
比如
id 级别 部门
1 1 董事会
2 3 财务部
3 3 人事部
4 2 董事长助理办公室
5 2 副董事长助理办公室

或者单独一张表,然后id在部门表里当外键?。。。。

或者在部门编码上做手脚(金融行业的树状结构都是这么做的),子节点的编码以父节点编码作为编码前缀,编码长度统一,那么编码长度长的肯定是子级部门。(这个多用在搜素树状结构树时,搜素子节点及超子节点比较方便)

[quote]这样也没办法判断啊!给出的两条记录是任意的两条记录,他们之间可能也不存在上下级关系的啊![/quote]
这个意思啊。。。。
那不如直接建一张表 保存部门的上下级关系
部门表
id 部门
1 董事会
2 财务部
3 人事部
关系表
2 1
3 2
3 1
人事部是董事会和财务的下级,财务是董事会下级
部门个数本来就不会多,数据量应该很小的

不要把上级的字段放在部门表里啊,单独拎出来

不然上级的上级这种循环关系就不能找了

[quote]项目中已经这样设计了,不能动了[/quote]
那就用wangyijiangshui 的编码方式,

就改一个字段,把[b]parentId:上级部门id[/b] 这个字段改成部门编号,然后用010010这种表示

这种改动工作量应该不大吧,然后就完美了

这个主要是要去追溯上级的上级这种情况的,如果只是2级的关系,只要看下 parentId 的值就完全可以判断是不是上下级关系了

上级的上级 这种情况就要循环的找出所有的级别关系来