获取父级的所有子层次结构

时间:2014-07-31 06:08:56

标签: mysql sql database hierarchy self-join

我有一个表 employeehierarchy ,其中有很多记录。我想获取高级层次结构中的所有记录。

在这张表中,Anshul是大多数高级员工,我希望得到Anshul下的所有初级员工姓名,即Yogesh,Chirag,Vimal和Ajay。

|   Id    |           name           |    | Senior     |    |  |  |  |  |
+---------+--------------------------+----+------------+----+--+--+--+--+
|      14 | Anshul                   |    |          0 |    |  |  |  |  |
|      15 | Yogesh                   |    |         14 |    |  |  |  |  |
|      16 | Chirag                   |    |         15 |    |  |  |  |  |
|      17 | Vimal                    |    |         16 |    |  |  |  |  |
|      18 | Ajay                     |    |         17 |    |  |  |  |  |

我需要一个mysql查询来实现这一目标。 感谢

2 个答案:

答案 0 :(得分:1)

愿这有助于某人,

    SELECT  @id :=
        (SELECT  Id
        FROM    employeehierarchy
        WHERE   Senior = @id
        ) AS employee
FROM    (
        SELECT  @id := 14
        ) vars
STRAIGHT_JOIN
        employeehierarchy
WHERE   @id IS NOT NULL;

答案 1 :(得分:0)

您需要在数据库中创建一个与您的sr和初级员工之间的关系。不幸的是,它超出了关于如何实现这种关系的问题的范围。因为这涉及更多数据库架构。  一种选择是在现有表中创建一个新字段,其中包含每位员工的高级ID。   另一种选择是拥有一个单独的表,其中有三个字段id,employee id,senior id。

我建议第二种选择。然后,您可以在SQL中执行条件连接。