Ankündigung

Einklappen
Keine Ankündigung bisher.

INSERT INTO tab1 FROM tab2, aber!

Einklappen

Neue Werbung 2019

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

  • INSERT INTO tab1 FROM tab2, aber!

    Hallo,

    ich finde es schon komisch, dass man über 2 Jahre Datenbanken bastelt und dann bei einem simplen Problem scheitert, weil man das eigentlich nie gebraucht hat.

    Ich muss aus 5 Datenbanken eine machen. Alle Tabellen haben natürlich (sonst wäre es ja unlustig) eine andere Form.

    z.B
    Code:
    Tabelle 1: ident | name | berufsid | ...
    Tabelle 2: id | vorname | name | berufsid | ...
    Tabelle 3: zaehler | Anrede | Vorname | Nachname | berufsid | ...
    ....
    Und in meiner neuen Tabelle soll es jetzt eine einheit geben (sogar vereinfacht.)
    Code:
    ident | name | berufsid | ...
    ident ist brav auto_increment und die IDs der Namen dürfen sich ändern, weil sich nichts darauf bezieht. und die berufsid sind schon auf die gleiche Tabelle umgeschrieben, müssen also auch nurmehr 1 zu 1 übertragen werden.

    Also Wollte ich jetzt einen
    Code:
    INSERT INTO neuetabelle (name,berufsid) SET ????
    und bei ??? setzt es aus. Wie bekomme ich jetzt die alte tabelle da rein. Ich hab versucht FROM altetabelle WHERE neuetabelle.name=altetabelle.name, etc... aber leider nichts gefunden, das mir sagt, dass dies und wie dies geht. Und die nüchterne Fehlermeldung ist ein "Syntaxfehler".

    Ich hab schon gelesen, dass man UPDATE über mehrere Tabellen machen kann, aber leider eine INSERT Hilfe.

    Ich hab in diesem Falle kein PHP sondern nur die MySQL-Konsole direkt am Server.

    Danke für die Hilfe,
    Stefan

  • #2
    Bau dir deinen Insert String in einer While Schleife zusammen...
    welche MySQL version hast du ?!

    benutz vllt. subselects ...

    Code:
    INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);
    
    INSERT INTO t2 (b, c)
    VALUES ((SELECT a FROM t1 WHERE b='Chip'), 'shoulder'),
    ((SELECT a FROM t1 WHERE b='Chip'), 'old block'),
    ((SELECT a FROM t1 WHERE b='John'), 'toilet'),
    ((SELECT a FROM t1 WHERE b='John'), 'long,silver'),
    ((SELECT a FROM t1 WHERE b='John'), 'li''l');
    http://dev.mysql.com/doc/refman/5.0/en/insert.html

    kommt halt im Großen und ganzen auf die Details an ... :wink:

    // EDIT oh gerade gelesen .. Kein PHP ... *hm* Also Subselect
    // Aber das wird schwierig und vor allem LANG ... ???

    Warum kein PHP ?!?!?

    Kommentar


    • #3
      Kein PHP, weil der Server nur eine Datenbank hat du die Daten von externen Servern abgefragt werden. Dort ist auch meist kein PHP, sondern eher CGI und Microsoft am Werke. Ich bin nur für die Datenübertragung zuständig und darf mit keinen apache auf der Maschine installieren. Und die IPs sorgen dafür, dass ich von keinen anderen Server über PHP zugreifen kann.

      MySQL: 4.1.10

      Ich hab grad im MySQL 4-Handbuch geschaut.
      http://dev.mysql.com/doc/refman/4.0/de/handler.html

      Dort steht was von
      Code:
      INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
       [INTO] tabelle [(spalten_name,...)] SELECT ...
      Die INSERT ... SELECT-Form fügt Zeilen ein, die aus einer oder mehreren anderen Tabellen ausgewählt wurden.
      Ich bin aber noch am durchlesen und weitersuchen und ausprobieren.
      Wenn ich es geschafft habe, dann sage ich Bescheid.

      Gruß,
      Stefan

      Kommentar


      • #4
        http://dev.mysql.com/doc/refman/4.0/...rt-select.html

        Kommentar


        • #5
          Danke für euer Kopfzerbrechen. Hab jetzt geschafft.

          Code:
          z.b.
          INSERT INTO neuetabelle (name,berufsid) SELECT CONCAT(o.vorname,' ',o.nachname) AS name,o.berufsid FROM oldtab o;
          Es lohnt doch mal die älteren Handbücher durchzulesen.

          Gruß,
          Stefan

          Kommentar

          Lädt...
          X