关于权限的查询。。谢谢留下sql语句 200分奉上

来源:百度知道 编辑:UC知道 时间:2024/06/10 21:58:03
都说用户,角色和权限是多对多的关系,那么就是要转化成一对多的形式查询,那么就要又加两个表。那不是5张表了吗?
(用户表 1) -> (n 用户角色表 n) <- (1 角色表 1) -> (n 角色权限表 n) <- (1 权限表)

那我如何查询一个用户的权限呢?
假设每个表只有两个字段:id,name.不是用配置文件查询。。谢谢

1。只需要一张中间表(user_role_right)
字段:user_id,role_id,right_id,id(该表自身id)四个字段。
2。
查询用户编号为001的所有权限,假定权限表为:right
select * from right where id in
(select right_id from user_role_right where uese_id=001
)

用户表(id,name)
角色表(id,name)
权限表(id,name)
用户角色表(uid(用户id),rid(角色id))
角色权限表(rid(角色id),aid(权限id))

查询主要用子查询,一层一层下去
select * from 权限表 where [id] in 

  select aid from 角色权限表 where rid in 
  ( 
    select rid from 用户角色表 where uid= 
    ( 
      select [id] from 用户表 where [name]='用户名' 
    ) 
  ) 
)

为什么要那么多表 = =||