managergames: Datenzeile direkt kopieren

Hallo
Ich habe 2 Datenbanken f1manager01 und f1manager03.
In beiden ist eine Tabelle fanartikel, die genau den gleichen Aufbau haben. f1manager01 ist mit Daten gefüllt, f1manager03 nicht. Jetzt möchte ich, dass eine bestimmte Benutzerzeile (z.B. team='Ferrari' ) von f1manager01 in f1manager03 kopiert wird. Klar - ich könnte jetzt den Datensatz mit SELECT * FROM fanartikel WHERE team='Ferrari' auslesen und dann wieder das ganze in eine INSERT-Anweisung wieder in die andere Datenbank bringen - aber gibt es vielleicht auch einen Befehl der so mit weniger Arbeit verbindet (PHP-MyAdmin hat ja auch bei der Daten-Sicherung gleich die INSERT-Anweisungen)...

Thomas

  1. echo $begrüßung;

    Jetzt möchte ich, dass eine bestimmte Benutzerzeile (z.B. team='Ferrari' ) von f1manager01 in f1manager03 kopiert wird.

    Du suchst also die INSERT ... SELECT Syntax.

    echo "$verabschiedung $name";

    1. Hi!
      Ich glaube du hast mich falsch verstanden mit dem INSERT ... SELECT -Befehl kann ich nur innerhalb einer Datenbank von einer Tabelle in eine andere Tabelle kopieren.

      ICh brauche aber einen Befehl, der etwas von eine Zeile einer Tabelle einer Datenbank in eine andere Tabelle in einer anderen Datenbank kopiert.

      Thomas

      1. echo $begrüßung;

        Ich glaube du hast mich falsch verstanden mit dem INSERT ... SELECT -Befehl kann ich nur innerhalb einer Datenbank von einer Tabelle in eine andere Tabelle kopieren.

        Nein, das kann wie viele MySQL-Statements auch datenbankübergreifend arbeiten.

        ICh brauche aber einen Befehl, der etwas von eine Zeile einer Tabelle einer Datenbank in eine andere Tabelle in einer anderen Datenbank kopiert.

        Du suchst also zusätzlich zum INSERT...SELECT auch noch die im Kapitel Identifier Qualifiers angegebene Schreibweise, um Tabellennamen (und auch Spaltennamen) serverweit eindeutig zu notieren.

        echo "$verabschiedung $name";

      2. yo,

        Ich glaube du hast mich falsch verstanden mit dem INSERT ... SELECT -Befehl kann ich nur innerhalb einer Datenbank von einer Tabelle in eine andere Tabelle kopieren.

        ich denke, er hat dir schon den richtigen tipp gegeben. der befehl sollte auch mit zwei verschiedenen datenbanken funktionieren, indem man die datenbankennamen mit angibt:

        datenbankname.tabelle.spalte

        du brauchst auf jedenfall für beide datenbanken auch ausreichend berechtigungen. falls es dennoch schwierigkeiten geben sollte, kannst du zuerst die komplette tabelle in die zieldatenbank als temporäre tabelle kopieren und dann den INSERT befehl dort anwenden.

        Ilja

        1. Hello Ilja,

          ich denke, er hat dir schon den richtigen tipp gegeben. der befehl sollte auch mit zwei verschiedenen datenbanken funktionieren, indem man die datenbankennamen mit angibt:

          datenbankname.tabelle.spalte

          Das funktioniert aber nur dann, wenn beide Datenbanekn vom selben Server bedient werden.
          Anderenfalls wird ein Umweg über eine Applikation ggf. nicht zu umgehen sein.

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

          Tom

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
          Nur selber lernen macht schlau

  2. Irgendwie steh ich immer noch auf dem Schlauch: Ich hab jetzt die alte Tabelle in die gleiche Datenbank getan wie die neue:
    Jetzt versuch ich es hiermit. Es geht aber nicht. Es will nämlich noch eine Spalte haben: Ich will aber das es alle Spalten kopiert!
    Was muss ich ändern, dass es klappt?

    INSERT INTO fanartikel SELECT fanartikelalt FROM fanartikelalt WHERE
    team='Ferrari'

    Thomas

    1. echo $begrüßung;

      Was muss ich ändern, dass es klappt?

      INSERT INTO fanartikel SELECT fanartikelalt FROM fanartikelalt WHERE
      team='Ferrari'

      Der SELECT-Teil wird so notiert wie man ihn auch ohne INSERT davor notieren würde. Das heißt, dass nach dem Schlüsselwort SELECT Spaltennamen oder auch ein * stehen sollen. Ein Tabellenname allein reicht nicht. Man kann aber sowohl den * als auch Spaltennamen um Datenbank- und Tabellennamen ergänzen:

      *
        tabelle.*
        datenbank.tabelle.*

      spalte
        tabelle.spalte
        datenbank.tabelle.spalte

      sind gültige Notierungen für Feldnamen.

      Für Tabellennamen, wie sie nach FROM und INTO angegeben werden, notiert man:

      tabelle
        datenbank.tabelle

      echo "$verabschiedung $name";