有两张表一张是role角色表,一张是模块表module
role表有一个字段模块编号集合module表有一字段是模块简称
role表里面的字段模块编号集合值有很多个module表字段模块简称值,role表里面的字段模块编号集合值且都是用(,)逗号分开的。这个该如何写查询语句 role表:角色表
字段
guid 角色名 模块编号集合
6c12222244d-4ddf-fda 总经办员工 QTFYSQ,QTFYSH,CGBYJCK,BGSQ,LCSQ
module表:(模块表)
字段:
guid 模块名称 模块编号
fff-cc-d 辅材办公 QTFYSQ
ffff-55-222-f d QTFYSH
ddd-e2333 销售日报 CGBYJCK
如何在知道总经办员工角色名的情况下,根据模块编号集合知道他对应有多少模块
role表有一个字段模块编号集合module表有一字段是模块简称
role表里面的字段模块编号集合值有很多个module表字段模块简称值,role表里面的字段模块编号集合值且都是用(,)逗号分开的。这个该如何写查询语句 role表:角色表
字段
guid 角色名 模块编号集合
6c12222244d-4ddf-fda 总经办员工 QTFYSQ,QTFYSH,CGBYJCK,BGSQ,LCSQ
module表:(模块表)
字段:
guid 模块名称 模块编号
fff-cc-d 辅材办公 QTFYSQ
ffff-55-222-f d QTFYSH
ddd-e2333 销售日报 CGBYJCK
如何在知道总经办员工角色名的情况下,根据模块编号集合知道他对应有多少模块
create table [module1]([guid] varchar(50),[模块名称] varchar(50),[模块编号] varchar(50))
goinsert [role1]
select '6c12222244d-4ddf-fda', '总经办员工', 'QTFYSQ,QTFYSH,CGBYJCK,BGSQ,LCSQ'insert [module1]
select 'fff-cc-d', '辅材办公', 'QTFYSQ' union all
select 'ffff-55-222-f', 'd', 'QTFYSH' union all
select 'ddd-e2333', '销售日报', 'CGBYJCK'declare @roleName varchar(50)
set @roleName='总经办员工'select * from [module1]
where CHARINDEX(',' + [模块编号] + ',',',' + (select [模块编号集合] from [role1] where [角色名]=@roleName) + ',')>0drop table [role1]
drop table [module1]/*
(1 row(s) affected)(3 row(s) affected)
guid 模块名称 模块编号
-------------------------------------------------- -------------------------------------------------- --------------------------------------------------
fff-cc-d 辅材办公 QTFYSQ
ffff-55-222-f d QTFYSH
ddd-e2333 销售日报 CGBYJCK(3 row(s) affected)
*/
create table [module1]([guid] varchar(50),[模块名称] varchar(50),[模块编号] varchar(50))
goinsert [role1]
select '6c12222244d-4ddf-fda', '总经办员工', 'QTFYSQ,QTFYSH,CGBYJCK,BGSQ,LCSQ'insert [module1]
select 'fff-cc-d', '辅材办公', 'QTFYSQ' union all
select 'ffff-55-222-f', 'd', 'QTFYSH' union all
select 'ddd-e2333', '销售日报', 'CGBYJCK'declare @roleName varchar(50)
set @roleName='总经办员工'select a.[角色名],b.[模块编号] from [role1] a
inner join
( select *,@roleName as '角色名' from [module1]
where CHARINDEX(',' + [模块编号] + ',',',' + (select [模块编号集合] from [role1] where [角色名]=@roleName) + ',')>0) b
on a.[角色名]=b.[角色名]
drop table [role1]
drop table [module1]/*
(1 row(s) affected)(3 row(s) affected)
角色名 模块编号
-------------------------------------------------- --------------------------------------------------
总经办员工 QTFYSQ
总经办员工 QTFYSH
总经办员工 CGBYJCK
(3 row(s) affected)
*/