无法对父子层次结构进行排序

时间:2021-06-11 11:38:26

标签: mysql

尝试了 StackOverflow 上另一篇文章的帮助。但不知何故,我没有得到预期的结果。如果有人能提供帮助,我将不胜感激。

SELECT IF(child = '',parent,CONCAT('->',child)) as value 
FROM
    (SELECT parent.full_name as parent,child.full_name as child, parent.hierarchy_level
     FROM hierarchy parent 
       INNER JOIN 
       (SELECT person_id,supervisor_person_id,full_name FROM hierarchy
        UNION 
        SELECT null,person_id,'' FROM hierarchy)child
     WHERE child.supervisor_person_id = parent.person_id 
     ORDER BY parent.hierarchy_level, parent,child
     )parent_child

输出:

Peter
->Jackson
->Thomas
Jackson
->Marry
Marry
Thomas
->Steve
Steve
->Nelson
Nelson

预期:

Peter
-  Thomas
-- Steve
-- Nelson
-  Jackson
-- Marry

这是表格数据:

CREATE TABLE `hierarchy` (
  `person_id` int(9) NOT NULL,
  `supervisor_person_id` int(9) NOT NULL,
  `full_name` varchar(255) NOT NULL,
  `hierarchy_level` int(9) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


INSERT INTO `hierarchy` (`person_id`, `supervisor_person_id`, `full_name`, `hierarchy_level`) VALUES
(132, 2232, 'Peter', 1),
(456, 132, 'Thomas', 2),
(789, 132, 'Jackson', 2),
(111, 456, 'Steve', 3),
(124, 111, 'Nelson', 4),
(242, 789, 'Marry', 2);

0 个答案:

没有答案
相关问题