三张很简单的表,如下
表 user
----------------------------
id       role_id
1           1
2           1
3           1
4           2
5           2
6           3
----------------------------表 role
----------------------------
id     role
1        10
2        20
3        30表user_manager ,      user_id和manager_id 的值都是user表中的id
---------------------------------------------
id       user_id           manager_id
1            1                            4                                       表示user 1 被 user 4管理,以下类推
2            2                            4
3            3                            5
4            4                            6
5            5                            6  
现在的要求是,给定一个user id, 找出被他管的指定role的user id.比如,
给定user 6,求他所管的role为20的user ,结果是user 4,5
给定user 6,求他所管的role为10的user,结果是user1,2,3
给定user 4,求他所管的role为10的user,结果是user1,2求高手给出sql语句,谢谢!

解决方案 »

  1.   

    我以 “给定user 6,求他所管的role为20的user ,结果是user 4,5” 为例给你写:
    select user_id from user_manager,role,user where user_manager.user_id=user.id and user.id=role.id and  user_manager.user_id=6 and role.role=20
    随手写的,你拿去运行一下看看有没有报错~希望能帮到你~
      

  2.   

    先谢谢你,不过我的意思是,一个sql语句,把上面的要求都搞定。
    简单说就是给定一个 user,求出他所管理的指定role的user。 可能是直接管理的,也可能是跨好几级管理的。
      

  3.   

    http://blog.csdn.net/acmain_chm/article/details/4142971
    MySQL中进行树状所有子节点的查询
    在Oracle 中我们知道有一个 Hierarchical Queries 通过CONNECT BY 我们可以方便的查了所有当前节点下的所有子节点。但很遗憾,在MySQL的目前版本中还没有对应的功能。 在MySQL中如果是有限的层次,比如我们事先如果可以确定这个树的最大深度是4, 那么所有节点为根的树的深度均不会超过4,则我们可以直接通过left join 来实现。 但很多时候我们...