Я пытаюсь решить эту проблему, имея ограниченные знания SQL.
У меня одна таблица с несколькими рядами сотрудников. Каждый сотрудник подчиняется MGRID. Данные могут располагаться на 7-8 уровнях, при этом сотрудник подчиняется руководителю, а менеджер - старшему. менеджер, старший от менеджера к директору и так далее.
Моя таблица выглядит так:
EMPID NAME MGRID
1 Alex 8
2 Jane 9
3 Bob 10
4 Shack 11
5 Chris 8
6 Sarah 10
7 James 8
8 Michelle 11
9 Ana 11
10 Steve 11
11 Ron NULL. <= CEO
12 Mike 3
13 Jenn 3
Моя конечная цель - создать что-то похожее на это (многоуровневое)
Ron
Shack
Steve
Bob
Mike
Jenn
Sarah
Ana
Jane
Michelle
James
Chris
Alex
Chris
В настоящее время используется среда разработки mysql с версией 5.6 и локальная среда с версией 8.0.
Спасибо.
@NickSuwyn Спасибо за ответ. Мой вопрос касается фактического запроса и вывода данных в новом формате, который отображается в виде иерархии / дерева.
Может быть, есть способ сделать это, но это было бы неплохо. Этот тип вывода не является общей и не предполагаемой функцией реляционной базы данных. Как правило, вы должны написать программу для запроса базы данных, а затем вы можете перебрать результирующий набор для печати данных на консоли или в файл. Извините, я не могу помочь с вашей первоначальной конечной целью, но вы можете подумать о том, чтобы взглянуть на проблему под другим углом.
@NickSuwyn благодарит за отзыв. Я изучу некоторые другие варианты, возможно, с помощью PHP или JS, поскольку я изучаю именно эти два языка. Ценю твою поддержку!
Без проблем. Это похоже на лучшее направление; удачи!






После долгих поисков я нашел решение, которое дает результаты, которые я ищу (или, по крайней мере, очень близко к тому, что мне нужно). Я отправляю этот ответ для всех, кто может искать.
WITH RECURSIVE descendants AS
(
SELECT EMPID, NAME, MGRID, 1 as level
FROM `EMPTABLE`
WHERE MGRID = NULL
UNION ALL
SELECT t.EMPID, t.NAME, t.MGRID, d.level+1
FROM descendants d, `EMPTABLE` t
WHERE t.MGRID = d.EMPID
)
SELECT * FROM descendants ORDER BY level;
Это был ресурс, который я нашел https://mysqlserverteam.com/mysql-8-0-1-recursive-common-table-expressions-in-mysql-ctes-part-four-depth-first-or-breadth-first-traversal-transitive-closure- избегание цикла /
Похоже, у вас есть структура отношений внизу в вашей таблице; у вас вопрос, как вывести данные в формате, описанном выше, с помощью запроса?