0

不确定标题是否准确反映了我需要做的事情,而且这个问题可能超出了 Stack Overflow 的范围,因为除了我的问题之外,我没有太多工作要做。我将解释我的情况......

我有一个报告网络应用程序。用户分为高级经理、经理和团队成员三个级别。每个经理负责一个团队。每个高级经理负责一部分经理。

高级经理和经理写一份关于他们下属的报告。目前系统只允许经理查看其直属下属的报告。然而,该系统将被调整为允许高级经理查看有关其经理的报告以及查看经理编写的有关其团队成员的任何报告。

我有表 team_members 表,它控制用户所在的团队。所以......

Users
--------
uid
forename
surname

team_members
------------
id
leader_id
member_id

leader_id 和 member_id 与 users 表的主键相关;uid。

因此,作为高级经理,我需要能够生成所有直接团队成员(经理)的列表,以及他们的下属列表。有没有办法在一个查询中做到这一点?

4

1 回答 1

0

我不确定 Herachial 数据是否是您需要/想要的,但这就是您需要的

所有上、中、普通会员、DEMO、SQL:

select 
IFNULL((SELECT name FROM users where uid=smng.leader_id),(SELECT name FROM users where uid=mng.leader_id)) 
         as top, 
(SELECT name FROM users where uid = mng.leader_id) 
         as middle,
usr.name as regular
from 
 users usr inner join managers mng on usr.uid=mng.member_id 
    inner join managers smng on mng.leader_id = smng.member_id

对于指定的高级经理添加:

where smng.leader_id =1

对于指定的中层经理更改为:

where mng.leader_id =2
于 2013-10-01T17:25:59.217 回答