Ich suche Hilfe mit einer Datenbank-Aufgabe, die wahrscheinlich von einigen Objekt-Programmiersprache leichter zu lösen sein wird. In diesem Moment versuche ich, TSQL/SQL Server-Lösung davon zu finden.Netzwerkdaten in SQL Server - Identifizieren separater Routen
Ich verwende eine Quellentabelle, die Daten über Routen enthält. Jeder Datensatz beschreibt einen Link einer Route mit routeNo, originNodeID und destinationNodeID. Das komplizierteste Beispiel von Daten aus dieser Tabelle sieht wie folgt:
routeID originNodeID destinationNodeID
WRTV ... ...
WRTX 5 10
WRTX 10 15
WRTX 15 20
WRTX 20 25
WRTX 25 30
WRTX 25 1505
WRTX 25 2005
WRTX 30 35
WRTX 30 1005
WRTX 35 40
WRTX 40 45
WRTX 45 50
WRTX 1005 1010
WRTX 1015 1020
WRTX 1505 1510
WRTX 1510 1515
WRTX 2005 2010
WRTX 2010 2015
WRTX 2020 2025
WRTY .... ....
So, wie Sie jeder RouteID beschreibt nicht sehen können, eine lineare Strecke aber Route mit Niederlassungen. Der Weg vom Beispiel kann wie folgt aussehen:
1515 1020
/ /
/ /
5 ------ 25 --- 30 -------50
\
\
2025
Nun, was ich tun muß, ist, diesen Weg zu getrennten Wegen zerstückeln:
5-25-30-50 WRTX1 5-25- 30-1020 WRTX2 1515.05.25 WRTX3 2025.05.25 WRTX4
Für jeden der neuen Routen ich brauche nur die Verknüpfungsfolge wie folgt:
routeID originNodeID destinationNodeID
WRTX1 5 10
WRTX1 10 15
WRTX1 15 20
WRTX1 20 25
WRTX1 25 30
WRTX1 30 35
WRTX1 35 40
WRTX1 40 45
WRTX1 45 50
WRTX2 5 10
WRTX2 10 15
WRTX2 15 20
WRTX2 20 25
WRTX2 25 30
WRTX2 30 1005
WRTX2 1005 1010
WRTX2 1015 1020
WRTX3 5 10
WRTX3 10 15
WRTX3 15 20
WRTX3 20 25
WRTX3 25 1505
WRTX3 1505 1510
WRTX3 1510 1515
WRTX4 5 10
WRTX4 10 15
WRTX4 15 20
WRTX4 20 25
WRTX4 25 2005
WRTX4 2005 2010
WRTX4 2010 2015
WRTX4 2020 2025
Haben Sie eine Idee, wie Sie mein Problem lösen können? Am liebsten würde ich diese Lösung in SQL Server machen, aber ich hatte nur wenig Erfahrung in Schleifen und Cursoren, die in diesem Fall möglicherweise nützlich sein könnten. Einmal habe ich sogar einen ETL gemacht, aber es funktionierte nur, wenn es nur einen Punkt gab, an dem sich die Route spaltete.
Ich wäre dankbar für jede Hilfe.
Ist dies wirklich ein Diagramm oder eine Hierarchie von links nach rechts? Es sieht so aus, als würden Sie nach allen * Blättern * und ihrem Pfad zum Stamm fragen. Sie könnten eine [hierarchyid] hinzufügen (https://msdn.microsoft .com/de-us/library/bb677290.aspx) Jeder hierarchyid-Wert codiert im Wesentlichen den Pfad zum Stamm und konvertiert Hierarchiesuchen in Bereichssuchen.Das bedeutet, dass Sie einen Index für eine hierarchyid-Spalte verwenden können, um die Suche zu beschleunigen –
Die [Konvertieren einer Tabelle in eine hierarchische Struktur] (https://msdn.microsoft.com/en-us/library/bb677237.aspx) tu torial zeigt, wie Sie eine Eltern/Kind-Tabelle in eine Tabelle mit hierarchyid-Spalten konvertieren können. –