日期:2014-05-17  浏览次数:20841 次

不是高手,请勿打搞。
用户表   Tb_Users
角色表   TbRole
用户角色关系表   User_Role_Rela
现已经建立此连:
create   or   replace   view   USER_ROLE_RELA_VIEW   as
select   t1.user_id,t1.user_name,t1.mobile,t2.tb_role_id,t2.rela_id   from   Tb_Users   t1     left   outer   join   User_Role_Rela   t2   on   t1.user_id=t2.user_id

请问:
如何通过一条SQL查询
1.当角色已经分配到具体用户的结果集(已经实现)
hqlForcount   =   "from   UserRoleRelaView   t1   where     t1.tbRoleId= ' "
+   tbroleId   +   " '   and   t1.relaId   is   not   null ";

2.用户未有当前角色的结果集(请高手)

3.用户未有或已经分配当前角色的结果集(请高手)

请高手!!!

------解决方案--------------------
我不是高手,但写了一下,你试试看可以吗?不知是否满足你的要求~~

2: sql = "select *
from UserRoleRelaView t1
where t1.user_id not in
(
select u1.user_id
from UserRoleRelaView u1
where u1.tb_role_id = ' "+tbroleId + " '
) ";

3:

sql = "select *
from UserRoleRelaView t1
where t1.user_id not in
(
select u1.user_id
from UserRoleRelaView u1
where u1.tb_role_id = ' "+tbroleId + " '
)

union

select *
from UserRoleRelaView t1
where t1.tb_role_id= ' "+ tbroleId + " '
and t1.rela_id is not null ";