SQL 查询问题。。。急。。。

来源:百度知道 编辑:UC知道 时间:2024/06/28 14:45:07
部门分类(dept)
id name isleaf
1 14 按业务部分类 0
2 14010 郑州分公司 0
3 14011 南昌分公司 0
4 14011001 宜春业务部 1
5 14011002 南昌业务部 1
6 14010001 安阳业务部 1
7 14010002 驻马店业务部 1
8 14010003 开封业务部 1

查询结果
fid fname sid sname id name
1 14 按业务部分类 14010 郑州分公司 14010001 安阳业务部
2 14 按业务部分类 14010 郑州分公司 14010002 驻马店业务部
3 14 按业务部分类 14010 郑州分公司 14010003 开封业务部
4 14 按业务部分类 14011 南昌分公司 14011001 宜春业务部
5 14 按业务部分类 14011 南昌分公司 14011002 南昌业务部

上面长度不够,fid,sid代表firstid和secondid,以此类推,isleaf 0代表分公司,1代表分公司所属的业务部,根据第一张表写出查询语句得到第二张表,急着要用啊。。。在线等。。
还有一道,用左连接来做的。。

部门(dept)
depid deptname superdept isleaf
1 B1 北京分公司 NULL 0
2 B4 临汾业务部 B1 1
3 B5 长治业务部 B1 1
4 B6 北京业务部 B1

--创建示例表
create table dept (id varchar(10),name varchar(15),isleaf int)
insert into dept
select '14' ,'按业务部分类',0 union all
select '14010' ,'郑州分公司' ,0 union all
select '14011' ,'南昌分公司' ,0 union all
select '14011001' ,'宜春业务部' ,1 union all
select '14011002' ,'南昌业务部' ,1 union all
select '14010001' ,'安阳业务部' ,1 union all
select '14010002' ,'驻马店业务部' ,1 union all
select '14010003' ,'开封业务部' ,1
go
--查询语句
select a.id fid,a.name fname,b.id sid,b.name sname,c.id,c.name from
(select id,name from dept where len(id)=2) a
left join
(select id,name from dept where len(id)=5) b
on a.id=left(b.id,2)
left join
(select id,name from dept where len(id)=8) c
on b.id=left(c.id,5)