Anmelden

View Full Version : SQL Update, Neuling-Frage



dk_150
03-05-05, 13:43
Hallo,

ich bin noch ziemlich neu mit SQL, sorry für die Fragestellung

ich möchte aus einer Datei bestimmte Felder auslesen, eines davon mit einem Faktor von 1,05 multiplizieren und in ein bestimmtes Feld einer anderen Datei ausgeben (neu eintragen, nicht überschreiben)

Bsp.

DateiA FELD1 FELD2 FELD3
FELD2 x 1,05 -> Ergebnis, FELD1, FELD3 -> DateiB

Wie sollte so eine Syntax aussehn?

Alternativ würde mir es auch weiterhelfen wenn ich aus DateiA die Felder selektieren und den Inhalt der Felder in DateiB (wobei sich die Feldnamen ändern) ausgeben kann.
DateiA FELD1 FELD2 FELD3 -> DateiB FELDa FELDb FELDc

Danke für Eure Hilfe

Fuerchau
03-05-05, 13:55
Insert into DateiB (Felda, Feldb, Feldc, ...)
(select feld2*1,05 , Feld1, Feld3, ... from DateiA where ...)

dk_150
10-05-05, 14:36
Hi!

Danke für die Hilfe, ich bekomme jedoch eine Fehlermeldung:

"Doppelter Schlüsselwert angegeben"

mit der F1 - Hilfe kann ich leider nicht allzu viel anfangen.

Wo könnte ich den Fehler finden?

JonnyRico
10-05-05, 18:17
Hi,

diese Meldung bedeutet einfach das eine Schlüsselverletzung vorliegt. Es liegt z.B. eine Primärschlüssel oder ein Unique Index auf dem "FeldA". Das bedeutet der Inhalt "X" im FeldA darf nur einmal in diesem Feld in der ganzen Datenbank vorkommen. Wenn es sich um einen richtigen Primärschlüsel handelt darf er außerdem keine Nullwerte enthalten. Wenn du evtl. bereits vorhandene Sätze in der DateiA ändern willst, musst du das mit Update machen.

Gruß

Sascha

Fuerchau
11-05-05, 10:54
D.h., im Select der Insert-Anweisung ist über die Where-Bedingung auszuschließen, dass doppelte Sätze eingefügt werden.

Insert into DateiB (Felda, Feldb, Feldc, ...)
(select feld2*1,05 , Feld1, Feld3, ... from DateiA where Feld1 not in (select Felda from DateiB))