fa_ge(九天)清进
表A(部门)--字段
部门ID 部门名称 上级部门
1 北京 中国
2 海淀区 北京
3 朝阳区 北京
表B(人员)--字段
人员ID 人员名 部门ID
4 小一 1
5 小二 2
6 小三 3
表C(薪水)--字段
薪水ID 薪水 人员ID 部门ID
1 200 4 1
2 300 5 2
3 400 6 3
问题: 当我在一个文本框里输入北京的时候出来的效果为---
北京 小一 200
海淀区 小二 300
朝阳区 小三 400
create table A
(部ID int, 部名 varchar(10), 上部 varchar(10))
insert into A
SELECT 1, '北京 ', '中 ' UNION ALL
SELECT 2, '海淀 ', '北京 ' UNION ALL
SELECT 3, '朝 ', '北京 ' UNION ALL
SELECT 4, '江西 ' , '中 ' union all
select 5, '南昌 ', '江西 ' union all
select 6, ' ', '南昌 '
create table B
(人ID int, 人名 varchar(10), 部ID int)
insert into B
select 4, '小一 ', 1 union all
select 5, '小二 ', 2 union all
select 6, '小三 ', 3 union all
select 7, '三 ', 4 union all
select 8, '三 ', 5 union all
select 9, '三 ', 6
create table C
(薪水ID int, 薪水 int, 人ID int, 部ID int)
insert into C
select 1, 200, 4, 1 union all
select 2, 300, 5, 2 union all
select 3, 400, 6, 3 union all
select 4, 500, 7, 4 union all
select 5, 500, 8, 5 union all
select 6, 500, 9, 6
create function dbo.aa(@str varchar(10))
returns @t table (部ID int,部名 varchar(100),上部 varchar(100),level int)
as
begin
declare @i int
set @i=1
insert into @t
select *,@i
from A
where 部名=@str
while @@rowcount> 0
begin
set @i=@i+1
insert into @t
select t.*,@i from A t LEFT JOIN @t b on t.上部=b.部名
where b.level=@i-1
end
return
end
select t1.部名 ,t2.人名,t3.薪水
from dbo.aa( '江西 ')t1 left join B t2 on t1.部ID=t2.部ID
left join C t3 on t2.部ID=t3.部ID
and t2.人ID=t3.人ID
order by t1.部名
compute sum(t3.薪水)
这个确实是你写的,但是,有错
在关键字 'select ' 附近有语法错误。
[解决办法]
部门ID 部门名称 上级部门 顶级部门 顶顶级部门 ……
1 北京 中国 亚洲 世界
2 海淀区 北京 中国 亚洲
3 朝阳区 北京 中国 亚洲
-------------
不知主看BOM 表有,如果是BOM的,建表
ID PRARENT CHILD
1 世界 亚洲
2 亚洲 中国
3 中国 北京
4 中国 江西
5 北京 海淀区
6 北京 朝阳区
7 江西 南昌
8 南昌
9 xx
是表才合理,理比方便,算成本,算物料需求也好理
如果次到几十,你不是要多几十字段?