有两张表一张是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
如何在知道总经办员工角色名的情况下,根据模块编号集合知道他对应有多少模块
select * from Module where (select 模块编号集合 from [Role] where 角色名='信息中心员工')
 like '%'+模块编号+'%' 
这个是怎么理解的???

解决方案 »

  1.   

    你可以看一下这个,根椐自符串,再根据折分的字符,写一个函数,返回你想要的.http://blog.csdn.net/peng13nannan/article/details/7418927
      

  2.   


    select * from Module where (select 模块编号集合 from [Role] where 角色名='信息中心员工')
     like '%'+模块编号+'%'  
    这个是怎么理解的???--你这个写法,假设后面成立,则前面所有模组都被你取出来了
      

  3.   

    你要只想用一个sql语句 ,你可以这么写select * from Module T1 where exists (select top 1 1 from [Role] where 角色名='信息中心员工' And ','+ 模块编号集合 + ',' Like '%,' + T1.模块编号+ ',%')
      

  4.   

    LZ又发了同样问题的帖子?针对你这种情况,那个SQL查询会有问题
    比如:
    role表中还有一个role为
    1111111111-ggdf-eba 行政助理 QTFYSQAAA,QTFYSH,CGBYJCK,BGSQ,LCSQ
    此时你用那个SQL查询就会把“行政助理”的QTFYSQAAA记录也查询出来,不准确,还是用我给你回答的那个吧