繁体   English   中英

当我们传递parent_id时,MySQL查询将树中的所有子级都获取

[英]MySQL Query to get all Children in tree when we pass parent_id

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

示例:对于emp_id 1,他的报告者为'2,3,4,5',对于emp_id 3,其报告者为'6,7',而在emp_id 6下又为'8,9'为报告者, 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函数。

您是指递归查询吗?

如果是,则可以阅读以下文档:SQL中的树: 嵌套集和实体化路径

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

请在下面查询。 您可以将硬编码的管理器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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM