部门级别表department
      dept_id     superior_dept_id     dept_name  
       1            0             市场营销部   
       2            0             人力资源部   
       3            1             主板营销室   
       4            1             显卡营销室 
       5            2             档案管理室   
       6            2             文件传达室 
设想实现的功能是:用户登入系统后,根据用户所在部门dept_id,判断当前部门有没有下级部门。
                  如果没有下级部门,  则根据当前部门dept_id,输出当前部门名称dept_name
                  如果有下级部门,    则查询表department,获取其下属所有部门dept_id,并根据dept_id,输出用户当
                                      前部门名称dept_name及其子部门名称dept_name
 
哪位大侠出来支招,小弟在此谢过了!!!  
       

解决方案 »

  1.   

    反过来做,根据用户查他的部门ID,再查这个部门有没有上级部门,不是更容易,一个select语句就好了。
    你应该还有一张用户表吧。
      

  2.   

    SELECT * FROM `department` WHERE `superior_dept_id` = dept_id
      

  3.   

    假设用户已登陆系统,$dept_id为部门id,且已存在<?php
    $result=mysql_query("SELECT * FROM department WHERE superior_dept_id='$dept_id'");
    $count=mysql_num_rows($result);
    if($count>0){
    //有子级存在,获得子级名称
    while($row=mysql_fetch_array($result)){
      $childs_show.=$row['dept_name'].'<br />';
    }
    }
    //读取当前名称
    $result=mysql_query("SELECT * FROM department WHERE dept_id='$dept_id'");
    $current_dept=mysql_fetch_array($result);
    //输出
    echo $current_dept['dept_name'],'<br />',$childs_show;
    ?>
      

  4.   

    这怪小弟没有交代清楚。是有另外一个数据表,但这是在用户部门ID已经获得的情况下进行的,试图通过部门ID区分上下级关系。不过根据我们的功能来看,根据用户所在部门ID判断是否有下级部门,更为合理一些。
      

  5.   

    create table catalog
    (
    id int identity(1,1) primary key,
    name varchar(20) not null,
    superId int , --上级id
    re varchar(50)
    )
    go
    insert into catalog values('所有类别',0,'所有类别')
    insert into catalog values('酒类',1,'酒类')
    insert into catalog values('饮料类',1,'饮料类')
    insert into catalog values('食品类',1,'食品类')
    insert into catalog values('白酒',2,'白酒')
    insert into catalog values('啤酒',2,'啤酒')
    insert into catalog values('冷冻食品',4,'冷冻食品')
    insert into catalog values('速热食品',4,'速热食品')
    insert into catalog values('即食食品',4,'即食食品')
    --所有类别(1)
    -----酒类(2)
    --------白酒(5)
    --------啤酒(6)
    -----饮料类(3)
    -----食品类(4)
    --------冷冻食品(7)
    --------速热食品(8)
    --------即食食品(9)
    go
    select a.name as '父类',b.name as '子类' from catalog a right join catalog b on a.id=b.superId
    --------------------------------------------------------------------
    查询结果
    上级名称  名称
    NULL 所有类别
    所有类别 酒类
    所有类别 饮料类
    所有类别 食品类
    酒类 白酒
    酒类 啤酒
    食品类 冷冻食品
    食品类 速热食品
    食品类 即食食品
    ------------------------------------------------------------------
    希望是你想要的