Generierung der Hierarchie-ID

8

Ich möchte die hierarchyId wie folgt einfügen

/ - CEO (Wurzel)

/ 1 / - Einkaufsmanager / 2 / - Verkaufsmanager

/ 1/1 / - Einkaufsleiter / 2/1 / - Verkaufsleiter

Das ist die Hierarchie, die ich verwenden möchte, ist es richtig, wenn ja, wie kann ich das tun, kann mir jemand ein Code-Snippet geben.

    
Mohanavel 14.12.2010, 13:50
quelle

2 Antworten

17

Ich bin bei der Suche nach Informationen zum Datentyp hierarchyid auf diese Frage gestoßen und dachte, dass es für jeden anderen, der nach mir kommt, interessant wäre, auch Code zum Einfügen von hierarchyid s nach der Frage zu sehen.

Ich behaupte nicht, dass dies die einzige Möglichkeit ist, hierarchyid s einzufügen, aber hoffentlich wird es denjenigen helfen, die wie ich keine Erfahrung mit diesem Datentyp haben.

Verwenden Sie diese Tabelle,

%Vor%

Sie können Parse verwenden, um hierarchyid s direkt über die Zeichenfolgenpfade einzufügen:

%Vor%

und verwenden Sie die folgende Abfrage, um die Tabelle

zu überprüfen %Vor%

Sie können auch die Datenmethoden hierarchyid GetRoot und GetDescendant um die Hierarchie zu erstellen. Ich fand diese Methode umständlicher, aber ich denke, diese Methoden sind notwendig, wenn Sie die Hierarchie programmatisch verwalten.

%Vor%

Überprüfen Sie auf jeden Fall die Links in der anderen Antwort, aber hoffentlich wird auch dieser Code zum Ausprobieren hilfreich sein.

    
Jeff Ogata 15.09.2011 02:31
quelle
0

Angenommen, Sie haben ein Tabellenschema mit einem Self-Join (wie unten gezeigt) und die ManagerID Ihres CEO ist NULL.

%Vor%

Sie können eine erste Menge von hierarchyid-Werten mithilfe des folgenden rekursiven CTE automatisch generieren:

%Vor%

Es wird dann zu einer ziemlich trivialen Angelegenheit, der Tabelle eine hierarchyid-Spalte hinzuzufügen, einen Index hinzuzufügen und sie dann durch Verbinden mit der temporären Tabelle aufzufüllen.

%Vor%

Beachten Sie jedoch, dass, wenn Sie möchten, dass die hierarchyid-Daten nach dem Hinzufügen konsistent bleiben, es sehr spezielle Möglichkeiten gibt, wie diese beibehalten werden sollen.

    
JamieSee 15.09.2017 17:31
quelle