Marc: PHP & MySQL

Guten Morgen Forum

Wie kann man die Daten von der einen MySQL-Tabelle in eine andere transferieren (mit Einschränkungen), wenn die Spaltenbezeichnungen, sowie die Datensatznummern der beiden Tabellen verschieden sind. Ich habe Mühe mit dem prinzipiellen Vorgehen. Besten Dank für eure Hilfe!

Grüsse, Marc

  1. Hallo,

    die eine Tabelle liest du komplett aus. sortierung eigentlich egal...
    auf das ergebnis machst du ein mysql_fetch_array.
    innerhalb einer schleife holst du nun die einzelnen datensätze raus und übergibst sie an ein sql-statement welches in die andere tabelle einträgt.

    die spalten kannst du ja nun korrekt eingeben und die werte hast du als array-inhalte vorliegen...

    Odium

    1. Hallo Odium

      auf das ergebnis machst du ein mysql_fetch_array.

      Soweit hab ich's

      innerhalb einer schleife holst du nun die einzelnen datensätze raus und übergibst sie an ein sql-statement welches in die andere tabelle einträgt.

      du denkst da wahrscheinlich an eine foreach-schleife, ja?
      Genau hiermit hab ich so meine probleme: wie sieht z.B. das statement innerhalb dieser schleife aus? Sie wird ja mehrmals durchlaufen (pro spalte einmal), und bei jedem durchlaufen muss er in eine andere spalte den momentan ausgelesenen wert eintragen. kannst du mir ein beispiel machen?

      Vielen Dank!
      Marc

      1. Hallo,

        ich dachte da eher an eine While-Schleife
        while ($daten = mysql_fetch_array($result))

        {
        //jetzt das insert

        $sql1 = "INSERT INTO tabelle_hinein(vorname,name) VALUES ('$daten["feld1_aus_tablle_heraus"],'$daten["feld2_aus_tablle_heraus"]')";
        // und ausführen
        $result1 = mysql_query($sql1,$db);

        }

        //$result ist das ergebnis des sql-select auf die basis-tabelle...

        aber der andere Weg von Kerstin klingt auch gut...ist auf jedenfall schneller zu schreiben, aber du kannst einzelne feldinhalte nicht so gut überprüfen...

        Odium

  2. Hallo Marc,

    INSERT INTO tabelle2 (spaltea, spalteb, spaltec) SELECT spalte1, spalte2, spalte3 FROM tabelle1

    viele Grüsse
    Kerstin

    1. Hallo Kerstin

      INSERT INTO tabelle2 (spaltea, spalteb, spaltec) SELECT spalte1, spalte2, spalte3 FROM tabelle1

      Vielen Dank für dein Tip, das klingt schon mal ganz logisch. wenn ich den select-teil noch mit einer where-klausel ergänze und dabei mehrere datensätze betroffen sind, muss ich das ganze noch in irgend eine schleife verpacken oder wie geht das system vor?

      Danke und viele grüsse, Marc

      1. Hallo Marc,

        es reicht aus, wenn Du die entsprechende WHERE-Klausel formulierst. Mit Schleifen oder ähnlichem mußt Du Dich nicht mehr beschäftigen. Das Statement läuft komplett auf der DB. Du solltest nur noch schauen, ob das Statement fehlerfrei abläuft.

        Gruß Frank