高分求一sql语句
表1 --政府机关
Viceid keyid parentid 电话 传真 办公时间
1 31 -1 11 11 11
2 32 1 22 22 22
3 33 1 33 33 33
表2 --政府机关_组织机构
subdeptid viceid 名称 职能
1 1 组织部 111
2 2 法制课 222
3 3 政治部 333
4 1 政治部 333
5 1 法制课 222
表3 --主数据
keyid city name address
31 北京 北京市公安局 8888
32 北京 朝阳区公安局 9999
33 北京 海淀区公安局 0000
其中表1 表2 viceid关联
表1 表3 keyid关联
表1 parentid是引用viceid,成树结构
结果:
北京市公安局
组织部 111
政治部 333
法制课 222
朝阳区公安局
法制课 222
海淀区公安局
政治部 333
如果没有下属部门,只显示自己的组织机构。
如:北京市公安局下有各个区的公安局,市公安局有自己的组织机构,
而区公安局也有自己的组织机构
------解决方案----------------------测试环境
declare @table1 table
(
viceId int,
keyId int,
parentId int
)
declare @table2 table
(
stbdeptId int,
viceId int,
名称 varchar(50)
)
declare @table3 table
(
keyId int,
city varchar(20),
name varchar(50)
)
insert into @table1 values (1, 31, -1)
insert into @table1 values (2, 32, 1)
insert into @table1 values (3, 33, 1)
insert into @table2 values (1, 1, '组织部 ')
insert into @table2 values (2, 2, '法制课 ')
insert into @table2 values (3, 3, '政治部 ')
insert into @table2 values (4, 1, '政治部 ')
insert into @table2 values (5, 1, '法制课