У меня есть таблица, в которой перечислены родительские дочерние отношения для каждого элемента, например:
ParentID ParentTitle ChildId ChildTitle
----------------------------------------------
843 Documents 38737 Jobs
843 Documents 52537 Tools
843 Documents 5763 SecondOps
843 Documents 4651 Materials
38737 Jobs 16619 Job001
38737 Jobs 16620 Job002
38737 Jobs 16621 Job003
38737 Jobs 16622 Job004
38737 Jobs 16623 Job005
52537 Tools 1952 HandTools
52537 Tools 1953 Automated
52537 Tools 1957 Custom
1952 HandTools 12 Cordless10mm
1952 HandTools 13 Cordless8mm
1952 HandTools 14 CableCrimp
1952 HandTools 15 Cutter
1952 HandTools 16 EdgePlane
5763 SecondOps 101 Procedure001
5763 SecondOps 102 Procedure002
5763 SecondOps 103 Procedure003
4651 Materials 33576 Raw
4651 Materials 33577 Mixed
4651 Materials 33578 Hybrid
4651 Materials 33579 Custom
16622 Job004 101 Procedure001
16622 Job004 14 CableCrimp
16622 Job004 15 Cutter
16622 Job004 4651 Mixed
16623 Job005 102 Procedure002
16623 Job005 103 Procedure003
16623 Job005 16619 Job001
16623 Job005 1953 Automated
16623 Job005 33579 Custom
16623 Job005 33576 Raw
Я хотел бы получить полный путь каждой комбинации, используя идентификаторы, например
Documents\Jobs\Job003 = 843\38737\16621
Другим примером может быть «Procedure001», который указан в 2 местах.
Documents\SecondOps\Procedure001 = 843\5763\101
Этот же документ также упоминается здесь:
Documents\Jobs\Job004\Procedure001 = 843\38737\16622\101
Я хотел бы взять эту таблицу и построить TreeView в .NET. Таким образом, наличие полного пути для каждого элемента сделало бы его легкой прогулкой.
В противном случае я думал, что могу начать с корневой страницы и продолжать рекурсию по родителям, создавая список дочерних элементов, затем повторяя их и т. д.
Есть ли лучший способ запросить это, чтобы построить эти пути? В этом списке 400 000 записей, поэтому, если есть более эффективный способ, это сэкономит время.
Все это было первоначально в системной базе данных AS400 до 2000 года, а затем превращено в сайт MediaWiki. Я извлекаю данные через API с целью создания интерфейса для базы данных SQL Server.
Я могу выполнять базовые SQL-запросы, объединения, объединения и т. д.
Дайте мне знать, какую еще информацию я могу предоставить, если это неясно