2016-05-25 51 views
0

我一直在查看導致查詢的結果總數超過已經傳遞給查詢的上級emp_id。當我們通過parent_id時,MySQL查詢獲取樹中的所有子元素

示例:對於emp_id 1,他'2,3,4,5'作爲報告人,並且再次爲 emp_id 3'6,7'爲報告並且再次根據 emp_id 6'8,9 '是reportees和 emp_id 9有一個reportee'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爲

請幫助或者與MySQL功能的MySQL查詢。

回答

0

你的意思是遞歸查詢嗎?

如果是的話,你可以閱讀本文件:在SQL樹:Nested Sets and Materialized Path

這種方式不使用查詢獲取樹數據,是用表結構來獲得相同的數據。這很容易查詢。

0

請發現以下查詢。您可以將管理員標識值硬編碼到「初始化」部分,也可以傳遞變量。

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) 
+0

這是我在問題中發佈的查詢,但這不適用於報告人超過35的情況。 – user93068

相關問題