UPDATE aus SELECT in mehrere Felder
Matze
- datenbank
Hallo NG,
ich habe 2 Tabellen mit ca. 20 Felder sind identisch (nicht alle).
Nun würde ich gerne ein Update wie z.B.:
update personal set typ=select typ from korrektur where
personal.pnr = korrektur.pnr;
Mit einem Feld läuft das problemlos. Was mache ich allerdings bei 20 Feldern
? Ist das generell möglich ?
Danke im voraus.
Grüsse
Matthias
Servus,
ja das geht so, solange die where Klausel zutrifft, werden diese Felder upgedated.
Gruss Matze
Hi Matze :-),
hmm, ehrlich mir ist nicht klar wie ich den schreiben soll.
update auftrag
set auftrag.anrede = adressen.anrede,
auftrag.name = adressen.name
Sorry, oder ich stehe auf der Leitung.
Grüsse
Matze
hi,
update personal set typ=select typ from korrektur where
personal.pnr = korrektur.pnr;
soweit ich weiß, kannst du in der update kein select zur auswahl der felder nutzen, d.h. erst select der datensäte mit WHERE und dann konkret dein update mit SET spalte = '$var', spalte2 = '$var2' usw
vielleicht helfen die die MySQL befehle union oder join
damit kannst du tabellen "verknüpfen"
ciao
ronny
Hello,
hast Du das schon mal mit Aliasen für die Felder probiert? Ich schlage aber nochmal nach.
Geduld bitte
Grüße
Tom
Hello,
hast Du das schon mal mit Aliasen für die Felder probiert? Ich schlage aber nochmal nach.
Meine Hardcopies sagen mir, dass UPDATE das nicht kann, aber REPLACE.
Dann müsstest Du
REPLACE into table1 (columnlist) select col1, col2, col3 from table2 where condition1 and condition2...
oder so ähnlich.
Wenn es klappt, dann bitte Repost
Grüße
Tom
Hallo Tom,
eigentlich eine prima Idee. Leider kann weder MS SQL noch Firebird den REPLACE umsetzen.
Trotzdem danke.
Grüsse
Matze
Hello,
eigentlich eine prima Idee. Leider kann weder MS SQL noch Firebird den REPLACE umsetzen.
Trotzdem danke.
Dafür können die mWn aber schon echte Subselects. Und vielleicht versteht der M$SQL auch das Aliasing im Update. Kannleider nicht nachgucken. Die Bibliothek ist schon im Container nach Übersee.
Grüße
Tom
hi,
Meine Hardcopies sagen mir, dass UPDATE das nicht kann, aber REPLACE.
relace verwendest du doch um zeichenketten zu ändern( geändert wird im zielstring die zeichenkette durch zeichenkette_a ), dazu müsstest du sie doch erst vorher kennen, also auch die db bemühen. würde es da nicht doch mehr sinn machen, eine select und dann eine update anweisung?
ronny
Hello Ronny,
Meine Hardcopies sagen mir, dass UPDATE das nicht kann, aber REPLACE.
relace verwendest du doch um zeichenketten zu ändern( geändert wird im zielstring die zeichenkette durch zeichenkette_a ), dazu müsstest du sie doch erst vorher kennen, also auch die db bemühen. würde es da nicht doch mehr sinn machen, eine select und dann eine update anweisung?
Kannst Du das bitte mal genauer erläutern? Ich komm da nicht mit.
Grüße
Tom
hi,
Kannst Du das bitte mal genauer erläutern? Ich komm da nicht mit.
ich denke mir das so,
er will daten verändern die schon in der db stehen. also muss er sie auf jedenfall kennen um sie zu ändern.
mit replace suchst du in der db nach zeichenketten und änderst sie.
( müsste sich gut eigenen um bestimmt wörter zu ändern, nach dem prinzip fi**en oder Ar***) ;)
mit replace into überschreibst du daten
meines wissens versteht sich replace und where nicht, also muss update herhalten. er will ja wohl daten aus einer anderen tabelle mit dieser abgleichen ( hab ich was falsch verstanden? ), deswegen muss ja vorher eine bedingung ran. falls ich mich täusche, lasse ich mich gern belehren.
ronny
Danke an alle die geantwortet haben. Ich bin etwas unter Zeitdruck und löse es halt wie gehabt manuell. Trotzdem Danke für die Mühe.
Grüsse
Matze