有一个问题想请教各位达人

        树型数据结构(比如:一个信息系统中对单位部门的描述)在关系数据库系统中的实现算法(SQL、T-SQL或PL/SQL语言实现)

有一个表主要描述单位部门,且单位部门层次不定即一个单位A有子单位B,C。子单位B、C又有子单位,子单位B、C的子单位又有子单位。。。等等。

表结构如下:

表名:department

字段      数据类型

dpcode    int                     --单位代码

dpname  varchar(100)   --单位名称

dpcode_p  int                  --上一级单位代码

求:1、无子单位的单位数即求树的叶子数。

     2、此表的单位有多少级(层)即求树的层数。

    3、某同一级别(层次)的单位有多少即求树的某一层的结点数。

    4、某一单位属于那一级(层),是否无子单位即求树的某一结点属于那一层,是否是叶子。

解答(ms sql 2000 调试通过):

1、select  count(*)  as 叶子数 from department where  dpcode not in

      (select  distinct dpcode_p from  department )

其它问题的暂时无法解决,望各位达人给个意见(最好少用或者不要用变量和游标,要考虑时空效率)?

 

你可能感兴趣的:(有一个问题想请教各位达人)