Hallo
SQL-Spezis,
Ich habe eine Aufgabe (nee, keine Hausaufgabe, schaut mal aufs Alter
). Es geht ums Duplizieren von Einträgen einer Master-Detail Beziehung. Die Lösung sollte ein
SQL-Skript sein (Microsoft
SQL-Server Dialekt). Cursors sind verboten (weil sie lahm sind).
Gegeben sei eine Mastertabelle (die ID-Spalte ist ein Identity-Wert (also AutoInc)):
Code:
ID Name Eigenschaft
1 Fritz 1
2 Franz 2
3 Hubert 2
Die Detailtabelle sei (ID-Spalte wieder ein Identity-Wert, Verknüpfung über Detail.MasterID --> Master.ID):
Code:
ID MasterID Details
1 1 Fritz-1
2 1 Fritz-2
3 2 Franz-1
4 2 Franz-2
5 2 Franz-3
6 2 Franz-4
7 3 Hubert-1
8 3 Hubert-2
9 3 Hubert-3
Einfache Aufgabe: Klone alle Einträge (sowie die Detaileinträge) mit Eigenschaft = X. Bei X = 2 soll z.B. Franz und Hubert in der Mastertabelle und die insgesamt 7 Detaileinträge dupliziert werden.
Das Resultat wäre dann:
MASTER
Code:
ID Name Eigenschaft
1 Fritz 1
2 Franz 2
3 Hubert 2
4 Franz 2
5 Hubert 2
DETAIL:
Code:
ID MasterID Details
1 1 Fritz-1
2 1 Fritz-2
3 2 Franz-1
4 2 Franz-2
5 2 Franz-3
6 2 Franz-4
7 3 Hubert-1
8 3 Hubert-2
9 3 Hubert-3
10 4 Franz-1
11 4 Franz-2
12 4 Franz-3
13 4 Franz-4
14 5 Hubert-1
15 6 Hubert-2
16 6 Hubert-3
Die IDs der geklonten Einträge ist egal, Hauptsache die Referenzen sind korrekt.
Ich habe eine Lösung, die allerdings in der Master-Tabelle eine Hilfsspalte verwendet ('Clone'). Geht es auch ohne? Gibt es Optimierungsmöglichkeiten?