Duplizieren von Datensätzen mit HILFE von SQL

Advantage Database Server

Moderator: Moderatoren

Antworten
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Duplizieren von Datensätzen mit HILFE von SQL

Beitrag von UliTs »

Hallo allerseits,

ich habe eine einfache Tabelle mit folgenden Feldern: Id,MasterId,Bezeichnung,(und weitere Felder).
Z.B. lautet der Inhalt:

Code: Alles auswählen

Id MasterId Bezeichnung ...
1  100      Bez1        ...
2  100      Bez2        ...
3  100      Bez3        ...
Nun möchte ich mittels eines SQL Befehls die Datensätze für eine vorgegebene MasterId (z.B. 100) duplizieren und dabei neue Ids vergeben sowie eine neue MasterId (z.B. 101) eintragen. Anschließend würde der Inhalt beispielsweise wie folgt aussehen:

Code: Alles auswählen

Id MasterId Bezeichnung ...
1  100      Bez1        ...
2  100      Bez2        ...
3  100      Bez3        ...
4  101      Bez1        ...
5  101      Bez2        ...
6  101      Bez3        ...
Wie macht man so etwas mit einem (oder mehreren) SQL-Befehl(en)?

Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
hschmidt
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 164
Registriert: Mo, 09. Jan 2006 17:06
Wohnort: Paderborn
Hat sich bedankt: 2 Mal
Kontaktdaten:

Re: Duplizieren von Datensätzen mit HILFE von SQL

Beitrag von hschmidt »

Hallo Uli,

ich würde die Id als Autoincrement-Feld definieren, dann mußt du dich um den Inhalt nicht kümmern, den Rest kannst du mit einem SQL-Befehl erledigen:

Code: Alles auswählen

insert into tablename (masterid, bezeichnung, ....) select masterid + 1, bezeichnung, .... from tablename where masterid = 100
Viel Erfolg!

Hans
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: Duplizieren von Datensätzen mit HILFE von SQL

Beitrag von UliTs »

Hallo Hans,

vielen Dank für die schnelle Antwort.
Das scheint ja ziemlich einfach zu sein! Autoincrement-Felder habe ich bisher nicht benutzt. Mir wurde davon abgeraten, weil beim Kopieren der Tabellen der Id-Wert verloren geht (!?). Außerdem benutze ich die Ids für Beziehungen zwischen den Tabellen und in referenziellen Integritäten. Kann ich dies auch beim Datentyp "Autoincrement" machen?

Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
hschmidt
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 164
Registriert: Mo, 09. Jan 2006 17:06
Wohnort: Paderborn
Hat sich bedankt: 2 Mal
Kontaktdaten:

Re: Duplizieren von Datensätzen mit HILFE von SQL

Beitrag von hschmidt »

Hallo Uli,

naja, vielleicht ist es doch nicht so einfach.
Da du die Frage hier im ADS-Forum gepostet hast, bin ich mal einfach davon ausgegangen, dass du mit ADS arbeitest. Den Datentyp Autoincrement gibt es aber (wenn ich mich nicht sehr täusche) nur bei ADT-Tabellen. Hast du schon auf ADT umgestellt?

Ich selber arbeite auch nicht mit Autoincrement-Feldern, da ich aber nicht weiß, mit welcher Logik du deine ID's generierst, habe ich das in der Antwort mal als einfache Möglichkeit benannt.
Wenn du also in dem SQL-Statement die ID neu setzen willst, mußt du diese im Statement ermitteln können. Entweder, indem du deine Programmlogik in dem Statement nachbildest, oder du mußt eine ADS Extended Procedure schreiben, die dir die ID liefert.

Hans
Antworten