Matze: UPDATE aus SELECT in mehrere Felder

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

  1. Servus,

    ja das geht so, solange die where Klausel zutrifft, werden diese Felder upgedated.

    Gruss Matze

    1. 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

  2. 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

  3. Hello,

    hast Du das schon mal mit Aliasen für die Felder probiert? Ich schlage aber nochmal nach.

    Geduld bitte

    Grüße

    Tom

    1. 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

      1. Hallo Tom,

        eigentlich eine prima Idee. Leider kann weder MS SQL noch Firebird den REPLACE umsetzen.
        Trotzdem danke.

        Grüsse
        Matze

        1. 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

      2. 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

        1. 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

          1. 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

  4. 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