UPDATE aus anderer DB durchführen ?

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

  • UPDATE aus anderer DB durchführen ?

    Habe da ein für mich erstmal unlösbares prob;

    Und zwar möchte ich aus einer PLZ-DB meine schon vorhandenen Datensätze UPDATEn.

    DB-Heime -> PLZ -> Bundesland
    DB-PLZ -> PLZ -> Bundesland

    Nur wie kann ich mySQL klarmachen die mit jeder PLZ zu tun ?

    So habe ich mir das vorgestellt, das es völlig flasch ist weis ich selber:
    PHP-Code:
    UPDATE `DB-HeimeSET `bundesland` = `xxxWHERE `plz` = `xxx`FROM DB-PLZ WHERE plz =`xxx`INSERT BUNDESLAND

    Kann mir jemand auf die Sprünge helfen ?

    Cu Sven
    MySQL 5.0.45 mit PHP 5.2.4 auf Suse 10.0.
    GD 2.0.28

  • #2
    Kannst du dein Problem bitte nochmal verständlich schilden oder genügt dir ein Hinweis auf "REPLACE ... SELECT ...", um es aus der Welt zu schaffen?

    Kommentar


    • #3
      wenn es verschiedene Tabellen in der gleichen mysql DB sind - kein Problem.
      Nach allen Regeln der Wahrscheinlichkeit hat OP das im Sinn.

      Wenn es Tabellen in verschiedenen DB sind aber auf dem gleichen server.... ich
      weiss nicht... müsste mit db_name.tbl_name.col_name gehen.

      Und wie müsste man vorgehen, wenn es verschiedene DB sind und verschiedene
      user/password brauchen. Sollte man mehrere mysql_selectdb haben, oder zwei
      mysql_connect...
      Zuletzt geändert von muh (newbie); 11.05.2006, 19:09.

      Kommentar


      • #4
        Nein nein.. So kompliziert ist es nicht.

        Es sind nur zwei TabellenStrukturen.
        Ich wollte die Abfrage nur in phpMyAdmin eingeben. So mache ich es immer. Nur hier weis ich nicht weiter.
        PHP-Code:
        -- 
        -- 
        Tabellenstruktur für Tabelle `newplz`
        -- 

        CREATE TABLE `newplz` (
          `
        plzvarchar(255NOT NULL default '',
          `
        stadtvarchar(255NOT NULL default '',
          `
        bundeslandvarchar(255NOT NULL default '',
          `
        landkreisvarchar(255NOT NULL default ''
        PHP-Code:
        -- --------------------------------------------------------

        -- 
        -- 
        Tabellenstruktur für Tabelle `altenheime`
        -- 

        CREATE TABLE `adressen` (
          `
        plzvarchar(64) default NULL,
          `
        ortvarchar(255) default NULL,
          `
        bundeslandvarchar(255) default NULL


        Nun möchte ich alle PLZ miteinander vergleichen und natürlich auch UPDATEn.
        Da in der DB 'adressen' viele Bundesländer nicht stimmen.
        Da die Benutzer diese selbst aus einem html-Select ausgewählt haben.

        Wenn das klappt dann kann ich den Befehl noch auf Stadt, Landkreis usw usw ausführen.

        Cu sven
        Zuletzt geändert von SonicCGN; 11.05.2006, 20:16.
        MySQL 5.0.45 mit PHP 5.2.4 auf Suse 10.0.
        GD 2.0.28

        Kommentar


        • #5
          UPDATE adressen,newplz SET adressen.bundesland=newplz.bundesland WHERE adressen.plz=newplz.plz;

          Ich würde auch noch versuchen, denke aber dass es nicht geht:
          UPDATE adressen SET bundesland=newplz.bundesland WHERE plz=newplz.plz;


          PS du hast einen Sprachfehler. Du willst nicht eine DB aus einer anderen DB, updaten sondern eine Tabelle aus einer anderen Tabelle- in der gleichen Datenbank. Es heisst alles- Tabellen.
          Zuletzt geändert von muh (newbie); 12.05.2006, 00:17.

          Kommentar


          • #6
            UPDATE adressen,newplz SET adressen.bundesland=newplz.bundesland WHERE adressen.plz=newplz.[COLOR=red]%[/COLOR]plz[COLOR=red]%[/COLOR];
            Funktioniert teilweise.
            Habe es so in phpMyAdmin eingegeben und rattern lassen. nach 5 minuten habe ich einen Restart von mySQL gemacht
            weil ich nicht mehr auf meine Seite zugreifen konnte.
            Ich denke das es daran liegt das ich z.B. für Köln alle PLZ's in EIN Feld geschrieben habe.

            PHP-Code:
            INSERT INTO `newplzVALUES ('50667| 50668| 50670| 51067',
             
            'Köln''Nordrhein Westfalen''Kreisfreie Stadt Köln''Köln''K'); 
            Der versuch das ganze mit [COLOR=red]%[/COLOR] zu umgehen hat nicht geklappt.
            Zuletzt geändert von SonicCGN; 13.05.2006, 16:24.
            MySQL 5.0.45 mit PHP 5.2.4 auf Suse 10.0.
            GD 2.0.28

            Kommentar


            • #7
              Aendere die DB Struktur.

              Testweise limite die updates.

              Kommentar


              • #8
                Die Struktur zu ändern ist etwas aufwendig.
                Die abfrage klappt ja eigentlich auch, jedoch nur solange nur eine (5-stellige) PLZ im Feld steht.

                Ich habe erstmal versucht das ganze mittels PHP zu lösen, aber das hat bisher auch nicht geklappt weil ich auch hier eine endlos-Schleife bekomme.

                Kann mir niemand sagen wie ich in die SQL-Abfrage einen Platzhalter rein bekomme !?!

                Cu sven
                MySQL 5.0.45 mit PHP 5.2.4 auf Suse 10.0.
                GD 2.0.28

                Kommentar


                • #9
                  Dann teste es mal limit-weise um zu schauen ob es geht und wieviele es in 1 Minute macht.

                  Wozu willst Du den Platzhalter?

                  Kommentar


                  • #10
                    Wenn Du sie mit Komma getrennt hättest anstatt mit geradem Strich, könntest Du den IN operator verwenden.

                    Ob das eine Endlos Schleife ist wage ich zu bezweifeln.

                    Kommentar


                    • #11
                      Es wird kein Problem sein den [COLOR=red]|[/COLOR] gegen ein [COLOR=red],[/COLOR] auszutauschen.

                      Wenn Du mir die Abfrage incl IN-Befehl dazu lieferst dann werde ich es direkt mal
                      ausprobieren. Es wird sicherlich irgendwie möglich sein das hin zu bekommen

                      Ein LIMIT wird hier sicherlich nichts bringen das es wirklich nur die Städte sind die mehrere PLZ's haben,
                      die anderen wurden schon erfolgreich ersetzt !!!

                      Achso und den Platzhalter habe ich gedacht VOR und HINTER der PLZ. Denn jede PLZ gibt es ja nur einmal.

                      Also [COLOR=red]%51429%[/COLOR] sollte ja dann in dieser zeile gefunden werden.
                      [COLOR=green]VALUES('51427|51429|51515');[/COLOR]

                      Cu Sven
                      Zuletzt geändert von SonicCGN; 13.05.2006, 16:26.
                      MySQL 5.0.45 mit PHP 5.2.4 auf Suse 10.0.
                      GD 2.0.28

                      Kommentar


                      • #12
                        Mit dem LIMIT kannst du die Abfrage stückweise machen und siehst wieviel Zeit 1000 Updates benötigen.
                        Dann weisst Du auch ob es eine unendliche Schleife ist oder eine langdauernde.
                        Machst Du LIMIT 1, LIMIT 50, LIMIT 1000 dann weisst du das bereits.

                        Kommentar


                        • #13
                          [COLOR=red]#1221 - Wrong usage of UPDATE and LIMIT [/COLOR]

                          Geht wohl nicht mit UPDATE zusammen.

                          Ist aber auch nicht das Problem, weil ich davon ausgehen kann das das Problem bei den Städten mit mehreren PLZ's liegt.
                          MySQL 5.0.45 mit PHP 5.2.4 auf Suse 10.0.
                          GD 2.0.28

                          Kommentar


                          • #14
                            Wieder was gelernt....
                            ich würde trotzdem noch die Anzahl Updates begrenzen um zu sehen ob es eine unendliche oder langdauernde operation ist.

                            Kommentar

                            Lädt...
                            X