Визуализация иерархии SQL - PullRequest
0 голосов
/ 28 февраля 2019

У меня следующая проблема:

  • Существует сущность с именем Branch.
  • Ветвь может принадлежать другой ветке или может быть отдельной ветвью.
  • Родительская ветвь может принадлежать другой ветке или может быть ветвью самого высокого уровня.
  • Можетбыть до 4-5 уровней иерархии.
  • Не существует петлевых иерархий (о которых мы знаем на данный момент).

Я хочу как-то экспортировать данныеиз SQL и визуализировать в какую-то древовидную диаграмму.Любые идеи высоко ценятся.

Вот снимок моей модели данных.Обратите внимание, что когда DivisonParentBranch = RegionParentBranch = Branch, это означает, что ветвь является автономной.

DivisionParentBranch RegionParentBranch Branch
                 150                401    401
                 150                401    402
                 150                401    403
                 150                401    404
                 273                248    248
                 273                248    277
                 273                248    278
                 273                273    273
                 273                273    286
                 273                273    408
                 273                273    809
                 356                356    356
                 356                356    358
                 356                356    363
                 356                356    405
                 356                356    773
                 356                357    357
                 356                361    361
                 356                361    364
                 739                511    511
                 739                511    513
                 739                511    514
                 739                511    515
                 739                511    517
                 739                511    519
                 739                511    520
                 739                511    779

enter image description here

UPDATE:

Ожидаемый результатвизуализировать эти ветви иерархий.Нечто похожее на изображение ниже.У нас около 500+ веток, поэтому нужно как-то автоматизировать это.enter image description here

1 Ответ

0 голосов
/ 28 февраля 2019

Это не красиво, и я уверен, что кто-то лучше использует функцию GROUP BY ROLLUP, но, начав с выходных данных этого, вы можете циклически просмотреть набор результатов и построить отображение на основе иерархии из списка ниже.Уровень 1 будет самой верхней частью дерева, уровень 2 будет ссылаться на уровень 1 и будет второй строкой и т. Д.

Кроме того, как уже упоминалось в комментариях, не публикуйте «данные» в качестве отпечатков экрана..

SELECT  div_branch, null as reg_branch, null as branch, '1' as level
FROM    @bracnhes
GROUP   BY div_branch
union all 
SELECT  div_branch, reg_branch, null as branch, '2' as level
FROM    @bracnhes
GROUP   BY div_branch, reg_branch
union all 
SELECT  div_branch, reg_branch, branch, '3' as level
FROM    @bracnhes
GROUP   BY div_branch, reg_branch, branch

Мой вывод, по крайней мере, немного, с которым я удосужился проверить, выглядит так

div_branch  reg_branch  branch  level
150         NULL        NULL        1
273         NULL        NULL        1
356         NULL        NULL        1
150         150         NULL        2
150         401         NULL        2
273         248         NULL        2
273         273         NULL        2
356         356         NULL        2
356         357         NULL        2
356         361         NULL        2
150         150         150         3
150         150         151         3
150         150         153         3
150         150         154         3
150         150         961         3
...