我有一个表 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查询来实现这一目标。 感谢
答案 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中执行条件连接。