dobra: Werte aus zwei Spalten kopieren

Hallo,

Ich möchte die Werte aus zwei Spalten einer Tabelle in eine neue Spalte kopieren.

Eine Spalte kopieren funktioniert:
UPDATE tabelle SET neueSpalte = Spalte1

Wenn ich aber auch die 2. Spalte auf diese Art kopieren möchte, werden die schon vorhandenen Werte überschrieben.

Habe auch (erfolglos) versucht, in einem Rutsch beide Spalten zu kopieren
UPDATE tabelle SET neueSpalte = Spalte_1,Spalte_2 -> Fehlermeldung
UPDATE tabelle SET neueSpalte = Spalte_1,neueSpalte = Spalte_2 -> nur die Werte der 2. Spalte werden geschrieben

Kann mir bitte jemand helfen die korrekten Anweisung zu schreiben?

Danke
dobra

  1. Hello,

    Kann mir bitte jemand helfen die korrekten Anweisung zu schreiben?

    nur, wenn ich deine Problemstellung richtig errate - du willst beide Werte hintereinander in die Spalte schreiben? Was hast du genau vor
    wert 1 | wert 2 => wert 1wert 2?

    Wenn ja, dann suchst du eine Concat-Funktion, wie die aussieht hängt ein Bißchen vom Datenbanksystem ab. Für MySQL ist es z.B. CONCAT

    MfG
    Rouven

    --
    -------------------
    Let Bygones Be Bygones  --  Robert Pitscottie: "Chronicles of Scotland"
    1. DANKE

      "CONTACT" war das Stichwort!

      update PY2_ITEM set SUCHW = CONCAT(WISUCHEN,BTEXT)

      so funktioniert es - jetzt kann ich auch schlafen gehen ;)

      gute Nacht und danke euch allen
      dobra

      1. Hello,

        "CONTACT" war das Stichwort!

        update PY2_ITEM set SUCHW = CONCAT(WISUCHEN,BTEXT)

        so funktioniert es - jetzt kann ich auch schlafen gehen ;)

        Noch ein Tipp:
        Wenn Du nicht spaltenübergreifend suchen willst, also nicht in

        Auto | Reifen
              ------
        auch das Wort 'tor' finden willst, dann nimm CONCAT_WS(' ',WISUCHEN,BTEXT)

        Durch das Zwischenfügen des Whitespace (oder eines beliebigen anderen Zeichens) werden solche Zufallstreffer minimiert. Wenn natürlich jemand nach "Auto Reifen" sucht, trifft es wieder...

        Harzliche Grüße vom Berg
        http://bergpost.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
        Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

  2. echo $begrüßung;

    Ich möchte die Werte aus zwei Spalten einer Tabelle in eine neue Spalte kopieren.

    Wie sollen die beiden Feldinhalte denn miteinander verbunden werden? Möchtest du sie, weil sie Zahlenwerte sind, miteinander addieren? Möchtest du, weil sie Strings sind, miteinander verknüpfen?

    echo "$verabschiedung $name";

    1. oha,

      zu so später stunde so viele datenbank-experten wie dedlfix und Rouven noch wach, da kann ich ja dann schlafen gehen... ;-)

      Ilja

      1. Hello,

        zu so später stunde so viele datenbank-experten wie dedlfix und Rouven noch wach, da kann ich ja dann schlafen gehen... ;-)

        haaaaaaalt! wach bleiben! Ich muss morgen früh aufstehen, also geh ich jetzt schlafen, da kann jemand anders Nachtwache machen :-)

        MfG
        Rouven

        --
        -------------------
        Ambition is the last refuge of failure.  --  Oscar Wilde (Irish Poet, Novelist, Dramatist and Critic, 1854-1900)
    2. echo $begrüßung;

      Ich möchte die Werte aus zwei Spalten einer Tabelle in eine neue Spalte kopieren.

      Wie sollen die beiden Feldinhalte denn miteinander verbunden werden? Möchtest du sie, weil sie Zahlenwerte sind, miteinander addieren? Möchtest du, weil sie Strings sind, miteinander verknüpfen?

      echo "$verabschiedung $name";

      Hallo nochmal,

      Sorry, wenn ich da unklare Angaben gemacht habe.

      Also zuerstmal habe ich eine mySQL DB (MySQL-Client-Version: 4.1.19)

      Ich habe für meinen Shop eine recht komplexe Suchfunktion gebastelt (die jetzt so auch funktioniert -> freu) und bin jetzt draufgekommen, daß ich ein Suchfeld "vergessen" habe.

      Konkret:
      Ich habe eine Spalte WISUCHEN - hier steht der Text, der durchsucht (mit bis zu 4 Suchworten die als "und" oder "oder" abgefragt werden)  und dann als Ergebnis angezeigt wird.
      (daneben wird als und/oder Optionen auch noch Preis von - bis, Kategorie und Hersteller abgefragt)

      Vergessen habe ich, daß auch der Text in der Spalte BTEXT durchsucht, aber NICHT angezeigt werden soll.

      Die Idee:  Ich lege eine neue Spalte SUCHWORT an und kopiere die Texte von WISUCHEN _und_ BTEXT in diese Spalte.
      -> in SUCHWORT wird gesucht und WISUCHEN auf der Ergebnisseite angezeigt.

      Wenn das so funktionieren würde, müßte ich lediglich in der Suchabfrage WISUCHEN gegen SUCHWORT tauschen und nicht das ganze (3 Seiten lange) Script neu schreiben.
      (was mir als Perl-Anfänger wochenlanges Versuchen mit unzähligen Fehlversuchen ersparen würde ;) )

      1. echo $begrüßung;

        Also zuerstmal habe ich eine mySQL DB (MySQL-Client-Version: 4.1.19)

        Diese Angabe hat dir das phpinfo() erzählt. Was aber ist PHP für die Datenbank? Ein Client. Muss dieser auf der selben Maschine laufen wie die Datenbank? Nein. Die Client-API muss also auch nicht aus den gleichen Quellen wie der Server kompiliert worden sein. Muss die Version der Client-API die gleiche sein wie die Datenbank? Nein, nicht unbedingt, denn so könnte man nicht mit einem Client auf unterschiedliche Server-Versionen zugreifen.

        Wenn du also wieder mal nach der Version des Datenbankservers gefragt wirst, dann frag den Server mit SELECT VERSION(), den phpMyAdmin ("Server Version: xxx") oder über die Client-API-Funktion mysql_get_server_info() (PHP-Pendant: mysql_get_server_info()), nachdem eine Verbindung zu einem konkreten Server hergestellt wurde (phpinfo() macht das nämlich nicht. Woher sollte es auch die dafür notwendigen Verbindungsdaten bekommen?).

        Die Idee:  Ich lege eine neue Spalte SUCHWORT an und kopiere die Texte von WISUCHEN _und_ BTEXT in diese Spalte.

        Meiner Meinung nach dürftest du besser fahren, wenn du einen Fulltext-Index über die betroffenen Felder anlegst und die Full-Text Search Functions verwendest, statt dir eine redundante Datenhaltung zuzulegen, die bei jedem Update der Ursprungsfelder extra berücksichtigt werden muss.

        echo "$verabschiedung $name";

        1. Wenn du also wieder mal nach der Version des Datenbankservers gefragt wirst, dann frag den Server mit SELECT VERSION(), den phpMyAdmin ("Server Version: xxx") oder über die Client-API-Funktion ....

          Danke für den Tipp
          (habe erst vor 14 Tagen angefangen, mich mit SQL Syntax zu beschäftigen)

          mfG
          dobra

  3. yo,

    Ich möchte die Werte aus zwei Spalten einer Tabelle in eine neue Spalte kopieren.

    ich vermute mal, du willst beide spalten zusammenfügen und in die neue spalte schreiben. dafür ist es erforderlich zu wissen, welches dbms und welche version du verwendest. grundsätzlich sollte man das für alle fragen bezüglich datenbanken angeben. Was du willst funktioniert zum beispiel unter Oracle folgendermaßen:

    UPDATE tabelle SET neueSpalte = Spalte1 || Spalte2;

    unter MSSQL wohl eher so:

    UPDATE tabelle SET neueSpalte = Spalte1 + Spalte2;

    MYSQL hat dafür meines wissen eine CONCAT funktion.

    Ilja