Gegeben eine Tabelle, die eine hierarchische Baumstruktur darstellt und drei Spalten hat
Ich kenne den untersten Knoten dieses Zweigs, und ich möchte das in einen neuen Zweig mit derselben Anzahl von Eltern kopieren, die auch geklont werden müssen.
Ich versuche, eine einzelne SQL INSERT INTO-Anweisung zu schreiben, die eine Kopie jeder Zeile, die derselben Hauptgruppe angehört, zu einer neuen GroupID macht.
Beispiel Anfangstabelle:
%Vor%Ziel, nachdem ich eine einfache INSERT INTO-Anweisung ausgeführt habe:
%Vor%Endgültige Baumstruktur
%Vor%Die IDs sind nicht immer gut verteilt, da diese Demo-Daten angezeigt werden. Daher kann ich nicht immer davon ausgehen, dass die ID des Elternteils 1 kleiner ist als die aktuelle ID für Zeilen mit Eltern.
Auch versuche ich dies in T-SQL (für Microsoft SQL Server 2005 und höher) zu tun.
Das fühlt sich an wie eine klassische Übung, die eine reine SQL-Antwort haben sollte, aber ich bin zu sehr daran gewöhnt zu programmieren, dass mein Verstand nicht in relationalem SQL denkt.
Versuchen Sie dies, basierend auf einer Abfrage aus Quassnoi 's Artikel Adjazenzliste vs Verschachtelte Sätze: SQL Server :
%Vor%Ergebnis bei Ausführung Ihrer Testdaten:
%Vor%Tags und Links sql sql-server sql-server-2005 tsql