我有三张表,用户表t_user{字段:userid,userName.. }
        
用户角色关系表t_user_role,{字段:userid,roleid.. }角色表t_role{字段:roleid,rolename.. }。
现在我要查询username,条件是该用户有且只有roleid=1的角色。
怎么实现查询?Sql语句也可以。

解决方案 »

  1.   

    select a.username from t_user a,t_user_role b where a.userid=b.userid and b.roleid = 1
      

  2.   

    不是这个,一个用户可以对应多个角色。我要查的是有且只有roleid=1这个角色的用户。
      

  3.   

      select u.v_sername  from sys_user u,
          (select count(0) as num,u.n_userid as userid
          from sys_user u,sys_user_role ur where u.n_userid=ur.n_userid 
          group by u.n_userid)  t
          where t.num=1 and u.n_userid=t.userid。
      

  4.   

    先按用户分组,找数量=1的,再等值连接
    select username from t_user tu ,(select count(*) number,* from t_user_role tur group by tur.userid) result where result.number = 1 and result.roleid = 1 and tu.userid = result.userid
      

  5.   

    在用户表中加一集合userrole对应t_user_role表:
    SELECT u.userName FROM t_user u join u.userrole ur where ur.userid=1;
      

  6.   

    连接查询
    select t.username from t_user u join t_user_role ur on u.userid=ur.userid join t_role r on r.roleid=ur.roleid 
      

  7.   

    哦,不好意思,上面的select后面应该为 u.username
      

  8.   

    6楼正解,hql是面向对象查询的.