日期:2014-05-18  浏览次数:20458 次

数据库查询难题
1.用户表
id         memberCode(权限:2为前台,3为后台)       power(可以受理的事项id)
1             2                                                                         1|2|3
2             3                                                                         1|2            
3             3                                                                         3

2.前后台绑定表
qianTaiId(对应用户表的id)         houTaiId(对应用户表的id)
1                                                                           2|3

比方说:如果1受理了事项3,因为2和3都是他的后台人员,但只有3可以办理该事情,所以如果1受理了事项3的话下一经办人就该是3;如果1受理了事项1的话,下一经办人就该是2。请高手指点下查询语句该怎么写(查询条件是用户id和事项id),解决立即给分,谢谢!

------解决方案--------------------
declare @a table(id int, memberCode int,power varchar(20))
insert @a select 1 ,2 , '1|2|3 '
union all select 2 ,3 , '1|2 '
union all select 3 ,3 , '3 '
union all select 4 ,2, '2|3 '

declare @b table(qianTaiId int, houTaiId varchar(20))
insert @b select 1 , '2|3 '
insert @b select 4 , '2|3 '

declare @id int,@s int
select @id=4,@s=1

select id from @a a, @b b where
qiantaiid=@id and charindex( '| '+ltrim(a.id)+ '| ', '| '+houtaiid+ '| ')> 0
and charindex( '| '+ltrim(@s)+ '| ', '| '+power+ '| ')> 0