Entwickler-Ecke

Datenbanken - Datensatz innerhalb einer Datenbank Kopieren


Grave_digger - Mi 25.06.03 12:01
Titel: Datensatz innerhalb einer Datenbank Kopieren
ich möchte gerne einen beliebigen datensatz kopieren und mit neuem schlüssel wieder ablegen und das alles innerhalb einer Datenbank/Tabelle benutze IB von Borland

mfg


CenBells - Mi 25.06.03 12:33

hallo,

du musst sowas machen wie,


Quelltext
1:
2:
3:
4:
insert into quelltabelle
Values 
  (Select * from quelltabelle
  Where schluessel = deinschluessel)


Gruß
Ken


Grave_digger - Do 26.06.03 10:05

Hi

ganzso funktiert es leider nicht

ich schreibe:

Quelltext
1:
2:
3:
4:
5:
6:
7:
 insert into COUNTRY 
 Values (Select * from COUNTRY where dollar = test)
Bekomme ich einen Fehler:
  Dynamic SQL Error
  SQL error CODE = -104
  Token UNKNOWN - line 2, chat 7
  Select

und was nun

ich möchte datensätze kopieren die in Tabllen liegen mit 60 und mehr Feldern

MFG

Moderiert von user profile iconTino: Code-Tags hinzugefügt.


CenBells - Do 26.06.03 10:12

dann versuche es ohne VALUE und ohne klammern


Grave_digger - Do 26.06.03 10:30

HI

und wie vergebe ich dann meinen neuen schluessel
bekomme Index fehler

mfg


CenBells - Do 26.06.03 11:17

dann kannst du anstelle

Quelltext
1:
select *                    

folgendes machen

Quelltext
1:
select deinneuerschlüssel, feld1,feld2, .. , feldn from...                    

deinneuerschlüssel muss dann an der stelle in der reihenfolge kommen, an der deine schlüsselspalte steht

Gruß
Ken

Moderiert von user profile iconTino: Code-Tags hinzugefügt.


yukon-troll - Do 26.06.03 12:20

@Grave_digger: hast du auch schon mal darüber nachgedacht das durch das Kopieren eines Datensatzes innerhalb einer Tabelle Redundanzen entstehen, die man durch das Normalisieren einer Datenbank/Tabelle eigentlich vermeiden will ?

MfG yukon-troll


neojones - Do 26.06.03 12:29

"TOKEN UNKNOWN" bedeutet, dass dasd Feld nicht gefunden wurde, wenn ich das richtig sehen. Ist "test" ein String und kein Feld? Dann müsste man es so schreiben:

Quelltext
1:
2:
insert into COUNTRY 
Values (Select * from COUNTRY where dollar = 'test')

Zum Thema Redundanzen: Wieso? Wenn ich z.B. einen Artikel kopieren will, weil Preise, Staffeln etc. gleich sind und später nur die Artikelbezeichnung ändere, dann entstehen dadurch keine Redundanzen gemäß Normalisierungs-Regeln.

Viele Grüße,

Matthias

Moderiert von user profile iconTino: Code-Tags hinzugefügt.


Grave_digger - Do 26.06.03 12:32

Yukon-Troll

das ist richtig aber warum soll ich einen datensatz der bis auf z.B die Artikelnummer (weil ander Hersteller aber gleiche sache) komplett noch einmal von Hand Eintragen sind wir nicht alle ein bischen Faul

mfg


Grave_digger - Fr 27.06.03 06:45

hi

hatt denn irgend jemand noch einen Lösungs ansatz :?: das muss doch irgend wie gehen das ist doch nichts ungewönliches oder

mfg


neojones - Fr 27.06.03 06:50

@Grave_digger: Hat das nicht funktioniert, wenn man das "Test" in Hochkommas schreibt? Welche Datenbank benutzt Du?

LocalSQL unterstützt meines Wissens ein SELECT im INSERT nicht, bin mir aber gerade auch nicht ganz sicher.

Viele Grüße,

Matthias


Grave_digger - Fr 27.06.03 11:22

Neo

wie bekomme ich jetzt einen Neuen Datensatz
benutze Interbase von Borland

und ich denke mal das du verstanden hast was ich meine
aber wie mach ich das

mfg


Grave_digger - Mo 07.07.03 08:20

Hat den niemand eine lösung für mich ich komme sonst nicht weiter bitte