创建部门表如下:
CREATE TABLE dept ( did int, d_name VARCHAR(15),pid int);
插入数据如下 (pid==0表示没有上级部门)
insert into dept(did,d_name,pid) values(1,'产品部',0)
insert into dept(did,d_name,pid) values(2,'手机研发','1')
insert into dept(did,d_name,pid) values(3,'无线产品','1')
insert into dept(did,d_name,pid) values(4,'人事部',0)
insert into dept(did,d_name,pid) values(5,'财务科',4)
insert into dept(did,d_name,pid) values(6,'招聘部',4)
insert into dept(did,d_name,pid) values(7,'上海招聘部',6)
insert into dept(did,d_name,pid) values(8,'北京招聘部',6)
现在想用sql实现
部门名称,部门代号,上级部门,部门深度,是否有下级部门
产品部 1 无 1 是
手机研发 2 产品部 2 否
无线产品 3 产品部 2 否
.......
请高手指点
CREATE TABLE dept ( did int, d_name VARCHAR(15),pid int);
插入数据如下 (pid==0表示没有上级部门)
insert into dept(did,d_name,pid) values(1,'产品部',0)
insert into dept(did,d_name,pid) values(2,'手机研发','1')
insert into dept(did,d_name,pid) values(3,'无线产品','1')
insert into dept(did,d_name,pid) values(4,'人事部',0)
insert into dept(did,d_name,pid) values(5,'财务科',4)
insert into dept(did,d_name,pid) values(6,'招聘部',4)
insert into dept(did,d_name,pid) values(7,'上海招聘部',6)
insert into dept(did,d_name,pid) values(8,'北京招聘部',6)
现在想用sql实现
部门名称,部门代号,上级部门,部门深度,是否有下级部门
产品部 1 无 1 是
手机研发 2 产品部 2 否
无线产品 3 产品部 2 否
.......
请高手指点
+------+------------+------+
| did | d_name | pid |
+------+------------+------+
| 1 | 产品部 | 0 |
| 2 | 手机研发 | 1 |
| 3 | 无线产品 | 1 |
| 4 | 人事部 | 0 |
| 5 | 财务科 | 4 |
| 6 | 招聘部 | 4 |
| 7 | 上海招聘部 | 6 |
| 8 | 北京招聘部 | 6 |
+------+------------+------+
8 rows in set (0.00 sec)mysql> select d_name as `部门名称`,did as `部门代号`,
-> (select d_name from dept where did=a.pid) as `上级部门`,
-> if((select count(*) from dept where pid=a.did)>0,'是','否') as `是否有下级部门`
-> from dept a;
+------------+----------+----------+----------------+
| 部门名称 | 部门代号 | 上级部门 | 是否有下级部门 |
+------------+----------+----------+----------------+
| 产品部 | 1 | NULL | 是 |
| 手机研发 | 2 | 产品部 | 否 |
| 无线产品 | 3 | 产品部 | 否 |
| 人事部 | 4 | NULL | 是 |
| 财务科 | 5 | 人事部 | 否 |
| 招聘部 | 6 | 人事部 | 是 |
| 上海招聘部 | 7 | 招聘部 | 否 |
| 北京招聘部 | 8 | 招聘部 | 否 |
+------------+----------+----------+----------------+
8 rows in set (0.05 sec)mysql>
http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/02/4142971.aspx
MySQL中进行树状所有子节点的查询