数据库表设计的时候设置父节点和子节点。--测试数据 CREATE TABLE t_A (ID int,name VARCHAR(200),ParentID int) INSERT INTO t_A SELECT 1,'aa',0 UNION ALL SELECT 2,'bb',0 UNION ALL SELECT 3,'cc',1 UNION ALL SELECT 4,'dd',3 go--求个节点下所有子节点: create function f_cid(@id int) returns varchar(500) as begin declare @t table(id int,desn varchar(10),parentid int ,lev int) declare @lev int set @lev=1 insert into @t select *,@lev from t_A where id=@id while(@@rowcount>0) begin set @lev=@lev+1 insert into @t select a.*,@lev from t_A a,@t b where a.parentid=b.id and b.lev=@lev-1 end declare @cids varchar(500) select @cids=isnull(@cids+'-','')+ltrim(id) from @t order by lev return @cids end goselect *,dbo.f_cid(id) as jd from t_AID name ParentID jd ----------- ------------------------- 1 aa 0 1-3-4 2 bb 0 2 3 cc 1 3-4 4 dd 3 4可以查询出所在节点的子节点个数,例如是X,算法就是X*层碰奖金系数*比例等等。
抱歉啊~这些都是咨询项目,开发、实施是第三方。能否发写pp或word文档呢
类别 职位名称 职位待遇 直接上级 晋升条件 直接下级 降级原因
底薪 提成 季度奖金 年终奖金 活动经费 股东分红 基本保险
销售 总经理 项目20% 净利润20%/人数 净利润3%/人数 项目事业部总经理
副总经理 项目20% 净利润14%/人数 净利润1%/人数 总经理
总监 项目20% 净利润8%/人数 副总经理
经理 项目14%-16% 净利润3%/人数 总监
主管 培训15% 净利润20%/人数 培训事业部总经理
职员 培训10% 净利润14%/人数 主管
技术 总经理 项目20% 净利润20%/人数 净利润3%/人数 项目事业部总经理
项目经理 项目20% 净利润14%/人数 总经理
项目组长 项目20% 净利润8%/人数 项目经理
组员 项目14%-16% 净利润3%/人数 项目组长
高级讲师 培训15% 净利润20%/人数 净利润3%/人数 培训事业部总经理
中级讲师 培训12% 净利润14%/人数 培训事业部总经理
讲师 培训10% 净利润8%/人数 培训事业部总经理
行政 行政主管 项目/培训10% 净利润10%/人数 净利润2%/人数
组员 项目/培训5% 净利润3%/人数 行政主管
管理 培训事业部总经理 培训5%*2 净利润7%/人数 净利润3%/人数
项目事业部总经理 净利润7%/人数 净利润3%/人数
数据库表设计的时候设置父节点和子节点。--测试数据
CREATE TABLE t_A
(ID int,name VARCHAR(200),ParentID int)
INSERT INTO t_A
SELECT 1,'aa',0
UNION ALL
SELECT 2,'bb',0
UNION ALL
SELECT 3,'cc',1
UNION ALL
SELECT 4,'dd',3
go--求个节点下所有子节点:
create function f_cid(@id int)
returns varchar(500)
as
begin
declare @t table(id int,desn varchar(10),parentid int ,lev int)
declare @lev int
set @lev=1
insert into @t select *,@lev from t_A where id=@id
while(@@rowcount>0)
begin
set @lev=@lev+1
insert into @t select a.*,@lev from t_A a,@t b
where a.parentid=b.id and b.lev=@lev-1
end
declare @cids varchar(500)
select @cids=isnull(@cids+'-','')+ltrim(id) from @t order by lev
return @cids
end
goselect *,dbo.f_cid(id) as jd from t_AID name ParentID jd
----------- -------------------------
1 aa 0 1-3-4
2 bb 0 2
3 cc 1 3-4
4 dd 3 4可以查询出所在节点的子节点个数,例如是X,算法就是X*层碰奖金系数*比例等等。