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);
解决方案
推荐阅读
- kotlin - 有没有办法为 2 个 editTexts 制作 1 个 Textwatcher?
- python - 如何找到一个数字的所有除数的总和,而不包括它
- python - 使用python将日期时间范围分配给变量
- c - VSCode C 问题:在 Windows 上调试和构建 C
- scala - HashMap 只显示一个键值
- gitlab - 远程存储库上的 Gitlab 镜像失败通知
- schemacrawler - SchemaCrawler 用户名和角色
- scala - Scala Spark:展平键/值结构数组
- javascript - 将 AJAX 数据与其他 AJAX 数据相关联
- python - Django 似乎没有模拟模型方法