Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Daten aus einer Spalte in eine andere Tabelle einfügen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Daten aus einer Spalte in eine andere Tabelle einfügen

    Hallo zusammen

    Ich habe 2 Tabellen:

    CREATE TABLE `cs_user_firm_ref` (
    `csufr_pk` int(11) NOT NULL auto_increment,
    `cs_pk` int(11) NOT NULL default '0',
    `user_pk` int(11) NOT NULL default '0',
    `firm_pk` int(11) NOT NULL default '0',
    `cs_string` varchar(200) NOT NULL default '',
    PRIMARY KEY (`csufr_pk`)
    ) TYPE=MyISAM

    CREATE TABLE `competence_string` (
    `cs_pk` int(11) NOT NULL auto_increment,
    `cs_string` varchar(200) NOT NULL default '',
    PRIMARY KEY (`cs_pk`)
    ) TYPE=MyISAM

    Wie ihr seht ist cs_pk in der Tabelle cs_user_firm_ref ein Fremdschlüssel und verweisst auf competence_string.

    Mir ist da ein Missgeschick beim Datenbankdesign passiert und nun möchte ich die Datensätze aus der Spalte cs_string von competence_string in die Spalte cs_string von cs_user_firm_ref updaten. Natürlich nach cs_pk.

    Ich stell mir irgendwie vor, dass ich mit UPDATE die Daten aus der einen Tabelle in die andere verschieben kann, aber ich kriege einfach den SQL String nicht hin...

  • #2
    Der dafür nötige SubSelect ist erst ab MySQL 4.x möglich.

    Dir bleibt aber die Variante, ein SELECT zu bauen, dass die Struktur der Tabelle nachbildet, einschliesslich des Schlüssels (SELECT `table`.*, `otherTable`.id AS foreignKey) und ein CREATE TABELE davor setzt ...

    Danach kannst du die alte Tabelle wegschmeissen und die neue umbenennen ...

    Kommentar


    • #3
      Daten hineinkriege

      Und wie kriege ich die Daten in die neue Tabelle...

      Weisst Du das mit den Subselects gleich so aus dem Bauch heraus?

      Ich habe hier sonst einen Testserver mit 4.x und da kann ich die Datenbank kurz importieren und anschliessend wieder exportieren...

      Kommentar


      • #4
        Der 3.x Weg:
        Code:
        CREATE TABLE cs_user_firm_refNew`
        SELECT  `cs_user_firm_ref`.`csufr_pk`,
                `competence_string`.`cs_pk`,
                `cs_user_firm_ref`.`user_pk`,
                `cs_user_firm_ref`.`firm_pk`
        FROM    `cs_user_firm_ref`
            INNER JOIN  `competence_string`
                ON  `cs_user_firm_ref`.`cs_string` = `competence_string`.`cs_string`

        Kommentar


        • #5
          Danke

          Hat super funktioniert...

          Vielen Dank Guradia!

          Kommentar


          • #6
            Wie würde das dann gehen wenn ich,
            ich alle Einträge aus der Spalte "JOB" von der Tabelle "emp"
            in die Spalte "JobENG" von der Tabelle "jobs" importieren möchte?

            Vielen Dank

            Kommentar


            • #7
              So:

              PHP-Code:
              INSERT INTO
                  jobs 
              (JobENG
              SELECT
                  emp
              .JOB
              FROM
                  emp 
              PS: wieso machst du kein neues Thread auf! Ich hab jetzt sinnigerweise den ganzen Thread gelesen und danach 2004 gesehen *grr*

              Kommentar

              Lädt...
              X