Data una tabella che rappresenta una struttura gerarchica ad albero e ha tre colonneUtilizzare SQL per clonare una struttura ad albero rappresentato in un database
- ID (chiave primaria, non-autoincrementing)
- ParentGroupID
- SomeValue
Conosco il nodo più basso di quel ramo e voglio copiarlo in un nuovo ramo con lo stesso numero di genitori che devono anche essere clonati.
Sto provando a scrivere una singola istruzione SQL INSERT INTO che creerà una copia di ogni riga che è dello stesso main ha è parte uno GroupID in un nuovo GroupID.
Esempio tabella di iniziare:
ID | ParentGroupID | SomeValue
------------------------
1 | -1 | a
2 | 1 | b
3 | 2 | c
gol dopo ho eseguito una semplice INSERT INTO:
ID | ParentGroupID | SomeValue
------------------------
1 | -1 | a
2 | 1 | b
3 | 2 | c
4 | -1 | a-cloned
5 | 4 | b-cloned
6 | 5 | c-cloned
finale struttura ad albero
+--a (1)
| +--b (2)
| +--c (3)
|
+--a-cloned (4)
| +--b-cloned (5)
| +--c-cloned (6)
Gli ID non sono sempre ben distanziati perché questi dati dimostrativi vengono visualizzati, quindi non posso sempre presumere che l'ID del genitore sia 1 in meno di th L'ID corrente per le righe che hanno genitori.
Inoltre, sto cercando di farlo in T-SQL (per Microsoft SQL Server 2005 e versioni successive).
Sembra un esercizio classico che dovrebbe avere una risposta puramente SQL, ma sono troppo abituato a programmare che la mia mente non pensa in SQL relazionale.
Quale versione di SQL Server si sta utilizzando? –
Non sono chiaro come debbano essere determinati i ParentGroupID clonati. In che modo il clone di B ha ottenuto un ParentGroupId di 4 mentre il clone di A ha ottenuto un ParentGroupId uguale alla sua riga di origine? – Thomas
Devo supportare SQL Server 2005. (Ho aggiornato il post originale per indicarlo) – AmoebaMan17