读书人

关于数据库查询有关问题

发布时间: 2012-02-22 19:36:55 作者: rapoo

关于数据库查询问题!
我有两个表:一个是部门表,一个是员工表
部门表如下:
部门编号 部门名称 所属部门编号
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\% '

读书人网 >VB

热点推荐