请教一个表的设计?

luckyprg 2006-01-04 03:44:04
加精
办公用品申请审批控制。
数据库需要能灵活设置。
可设置N个金额范围
例:
0-100 上级审批
100-1000 经理审批
>1000 总经理审批
但我上面的设计好像不太好控制这个范围。
请问如何设计比较方便,好用?
...全文
256 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
luckyprg 2006-01-07
  • 打赏
  • 举报
回复
已采用ReViSion的方法,这种控制起来最简单。
winternet 2006-01-06
  • 打赏
  • 举报
回复
0 100上级审批
100 1000经理审批
1000 总经理审批

可以用以下代替(x 代表金额):
x>0 and x<=100
x>100 and x<=1000
x>1000 and x<=Y(a large number)

所以可以取任意一边去代表这个等式,由于左部所有的数都是已经知道的,所以取左边的数,如下:
x>0
x>100
x>1000

相应数据库设计如下:
审批类别
ID Name
1 上级审批
2 经理审批
3 总经理审批

金额范围
ID 审批类别 值
1 1 0
2 2 100
3 3 1000
winternet 2006-01-06
  • 打赏
  • 举报
回复
0 100上级审批
100 1000经理审批
1000 总经理审批


审批类别
ID Name
1 上级审批
2 经理审批
3 总经理审批

金额范围
ID 审批类别 值
1 1 0
2 2 100
3 3 1000


luckyprg 2006-01-05
  • 打赏
  • 举报
回复
to:ReViSion
这个也不错,把上面的简化了一点。
mislrb 2006-01-04
  • 打赏
  • 举报
回复
同意一楼的
ReViSion 2006-01-04
  • 打赏
  • 举报
回复
--我也写个

create table #T (审批级别 int, value int, 级别说明 varchar(100))

insert into #T(审批级别, value, 级别说明) values(1,0,'上级审批')
insert into #T(审批级别, value, 级别说明) values(2,100,'经理审批')
insert into #T(审批级别, value, 级别说明) values(3,1000,'总经理审批')

select * from #t

declare @申请金额 int, @审批级别 varchar(100)
set @申请金额 = 160

select top 1 @审批级别 =级别说明
from #T
where value<@申请金额 order by value desc

select @审批级别

drop table #T


luckyprg 2006-01-04
  • 打赏
  • 举报
回复
还有没有更好的设计方法?期待~~~
gujianmin 2006-01-04
  • 打赏
  • 举报
回复
审批级别 min max 级别说明
1 0 100 上级审批
2 100 1000 经理审批
3 10000 10000 总经理审批

select * from tablea where 审批级别 = @审批级别

OracleRoob 2006-01-04
  • 打赏
  • 举报
回复
/*
MinJe MaxJe 审批级别
------------------------------------------------------------
0 100 上级审批
100 1000 经理审批
1000 总经理审批
*/

create table #T (MinJe int, MaxJe int, 审批级别 varchar(100))

insert into #T(MinJe, MaxJe, 审批级别) values(0,100,'上级审批')
insert into #T(MinJe, MaxJe, 审批级别) values(100,1000,'经理审批')
insert into #T(MinJe, MaxJe, 审批级别) values(1000,null,'总经理审批')

select * from #t

declare @申请金额 int, @审批级别 varchar(100)

set @申请金额 = 160

select @审批级别 =审批级别
from #T
where @申请金额>=MinJe and @申请金额<isnull(MaxJe,1000000000)

select @审批级别

drop table #T
luckyprg 2006-01-04
  • 打赏
  • 举报
回复
其实我也是这样设计的。
判断应该给谁审批就用select * from tablea where minje<@currJE and maxje>=@currJE这样来定位。(或者直接用between)
我就是觉得这样不够灵活,所以想看看大家是怎么设计的。
lsqkeke 2006-01-04
  • 打赏
  • 举报
回复
我觉得一楼的兄弟的表设计还可以的啊!!
luckyprg 2006-01-04
  • 打赏
  • 举报
回复
这样不太好控制吧,请你写出判断的SQL语句,谢谢。
OracleRoob 2006-01-04
  • 打赏
  • 举报
回复

MinJe MaxJe 审批级别
------------------------------------------------------------
0 100 上级审批
100 1000 经理审批
1000 总经理审批

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧