首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

关于数据库查询有关问题

2012-02-22 
关于数据库查询问题!我有两个表:一个是部门表,一个是员工表部门表如下:部门编号部门名称所属部门编号1总公

关于数据库查询问题!
我有两个表:一个是部门表,一个是员工表
部门表如下:
部门编号     部门名称       所属部门编号
1                     总公司                 0
2                     技术部                 1
3                     生产部                 1
4                     质量部                 3
5                     行政部                 1
6                     实验组1               4
员工表如下:
员工编号       员工名称             部门编号
001                   aaa                       2
002                   bbb                       4
003                   ccc                       6
004                   ddd                       3
查询的要求如下
如要查询总公司,则要查询出总公司下全部员工的名称
运行结果如下:
001                   aaa                       2
002                   bbb                       4
003                   ccc                       6
004                   ddd                       3

如要查询生产部,则要查询出生产部和他下级部门的所有员工
运行结果如下:
002                   bbb                       4
003                   ccc                       6
004                   ddd                       3
因为002   是质量部,他是属于生产部的,所以要查询出来
003是实验组,他的上级部门是质量部门,但是质量部门的上级部门是生产部,所以也要查询出来
如何写SQL语句,谢谢大家!

[解决办法]
建议在部门表中新建一个字段 Path(文本类型)
部门编号 部门名称 所属部门编号 Path
1 总公司 0 1\
2 技术部 1 1\2\
3 生产部 1 1\3\
4 质量部 3 1\3\4\
5 行政部 1 1\5\
6 实验组1 4 1\3\4\6\

先取得需要查询的根部门的 Path(总公司:1\,生产部:1\3\)

然后查询员工
select 员工.*
from 员工
join 部门 on 部门.部门编号 = 员工.部门编号
where 部门.Path Like '1\% '

热点排行