2016-05-25 2 views
0

Я искал запрос, в результате чего общее число сотрудников было выполнено с помощью расширенного emp_id, который был передан в запрос.MySQL Query, чтобы получить все дети в дереве при передаче parent_id

Пример: для emp_id 1 у него есть '2,3,4,5', как и под reportees снова для emp_id 3 есть '6,7' являются reportess и снова под emp_id 6 есть «8,9 'являются репортерами и снова под emp_id 9 есть репортер' 10 '

Теперь, когда я передаю manger_id' 1 'в Query, я должен получить всех 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 

В моей структуре таблицы есть manager_id столбец для каждого emp_id

Пожалуйста, помогите либо с запросом MySQL функции MySQL.

ответ

0

Вы имеете в виду рекурсивный запрос?

Если да, то вы можете прочитать этот документ: Деревья в SQL: Nested Sets and Materialized Path

Таким образом, не использовать запрос, чтобы получить данные дерева, являются использование структуры таблицы, чтобы получить те же данные. Легко запросить.

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

Это вопрос, который я опубликовал в вопросе Вопрос, но это не работает для некоторых сценариев, где репортеры превышают больше 35. – user93068

Смежные вопросы