0

我一直在查看查询结果,在已传递给查询的上级 emp_id 下的员工总数。

示例:对于emp_id 1,他有'2,3,4,5'作为reportees,再次对于emp_id 3,有'6,7'是reportess,再次在emp_id 6下有'8,9'是reportees,再次在下emp_id 9 有报告人 '10'

现在,当我将 manger_id '1' 传递给查询时,我应该得到所有 9 名员工。

以下是我的查询,如果单个员工下有 40 名员工,则该查询无效。

    SELECT manager_id,emp_id FROM users ,(SELECT @head := 2) head
    WHERE  FIND_IN_SET(manager_id, @head) > 0 AND @head := CONCAT(@head, "," , emp_id) ORDER BY manager_id

在我的表结构中,每个 emp_id 都有一个 manager_id 列

请帮助 MySQL 函数的 MySQL 查询。

4

2 回答 2

0

请在下面找到查询。您可以将管理器 ID 值硬编码在“初始化”部分,也可以传递变量。

select  EmpID,
        ManagerID 
from    (select ManagerID, EmpID from employee
         order by ManagerID, EmpID) employee_sorted,
        (select @pv := '1') initialization
where   find_in_set(ManagerID, @pv) > 0
and     @pv := concat(@pv, ',', EmpID)
于 2016-05-25T09:31:09.450 回答
0

你的意思是递归查询?

如果是,您可以阅读此文档:SQL 中的树:嵌套集和物化路径

这种方式不是使用查询来获取树数据,而是使用表结构来获取相同的数据。很容易查询。

于 2016-05-25T09:22:28.247 回答