这个问题怎么解决啊。。。。。。。。。。

xp122116961 2010-11-05 09:50:56
要完成业务员授权的一个功能,我自己的思路不清晰,谁能帮我一下
要求是这样的,
假如有3个业务员A,B,C
A有一份自己的单据,A可以授权给B或者C,未被授权的业务员不允许查看其他业务员的单据,只有被单据的所有者授权才可以
查看。
求SQL语句与思路,谢谢了
...全文
67 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
abuying 2010-11-05
  • 打赏
  • 举报
回复
请问,授权人B,C是否可以再授权给其它人?
华夏小卒 2010-11-05
  • 打赏
  • 举报
回复
--> 测试数据: [users]	-- 业务员表
if object_id('[users]') is not null drop table [users]
go
create table [users] (id int,name varchar(1))
insert into [users]
select 1,'A' union all
select 2,'B' union all
select 3,'C'
--> 测试数据: [USER_GRINT] 业务员授权表
if object_id('[USER_GRINT]') is not null drop table [USER_GRINT]
go
create table [USER_GRINT] (USERID int,GRINTiD int)
insert into [USER_GRINT]
select 1,2
--> 测试数据: [userYw] 业务员单据表
if object_id('[userYw]') is not null drop table [userYw]
go
create table [userYw] (userid int,ywid int)
insert into [userYw]
select 1,11 union all
select 1,22 union all
select 2,21 union all
select 2,23 union all
select 3,24

-- 查询身份 A

select c.*
from [userYw] C
JOIN
(
SELECT ID FROM USERS WHERE name='A'
UNION
SELECT USERID FROM [USER_GRINT],USERS WHERE GRINTiD=ID AND name='A'
) T
ON C.userid=T.ID



/*
userid ywid
----------- -----------
1 11
1 22

(2 行受影响)
*/

-- 查询身份 B
select c.*
from [userYw] C
JOIN
(
SELECT ID FROM USERS WHERE name='B'
UNION
SELECT USERID FROM [USER_GRINT],USERS WHERE GRINTiD=ID AND name='B'
) T
ON C.userid=T.ID

/*
userid ywid
----------- -----------
1 11
1 22
2 21
2 23
*/

-- 查询身份 C
select c.*
from [userYw] C
JOIN
(
SELECT ID FROM USERS WHERE name='C'
UNION
SELECT USERID FROM [USER_GRINT],USERS WHERE GRINTiD=ID AND name='C'
) T
ON C.userid=T.ID


/*
userid ywid
----------- -----------
3 24

(1 行受影响)
*/
seiferbb 2010-11-05
  • 打赏
  • 举报
回复
分三张表吧,用户表,权限表,以及单据表吧。
guguda2008 2010-11-05
  • 打赏
  • 举报
回复
在单据上加一个owner字段,创建人为默认插入的值,owner可以添加其它的owner到表单里,或者只有第一个Owner可以添加,字段里的id用,或者;分隔,判断时用charindex判断某个id是否是表单的OWNER
一品梅 2010-11-05
  • 打赏
  • 举报
回复
加个TAG字段好了。按需求来设计。。。
dawugui 2010-11-05
  • 打赏
  • 举报
回复
加个字段做个标记分别记录可操作的业务员。

然后你这种需求需要用程序去实现,如某业务员登录(不是指登录sql server)系统(你开发的系统),只能看标记为改业务员的资料。
王向飞 2010-11-05
  • 打赏
  • 举报
回复
单据id 授权

1 A
2 A
1 B
2 C

select * from table where 授权=‘A’

要是可以继承授权的话,那就再关联其他表,做递归查询。
claro 2010-11-05
  • 打赏
  • 举报
回复
方式一
设定组别,比如A是管理员(假设),当A将B、C添加相应的组即继承相应的权限。

windows等的权限控制也是如此。
华夏小卒 2010-11-05
  • 打赏
  • 举报
回复
目前的表结构已经确立了吗?

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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