UPDATE mehrerer Einträge mit integriertem SELECT..?

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

  • UPDATE mehrerer Einträge mit integriertem SELECT..?

    Hallo.
    Angenommen, ich habe die Tabelle test_db mit den Feldern:
    id,name,city,country

    Ich kann die Tabelle ja folgendermaßen füllen:

    PHP-Code:
    INSERT INTO test_db (
      
    id,
      
    name,
      
    city
    )
    SELECT
      id
    ,
      
    name,
      
    city
    FROM      test_db_2
    WHERE permission
    =

    Ist es möglich, auf ähnlicher Weise die Spalte country per UPDATE zu befüllen bzw. zu ändern?
    (sprich, ein UPDATE mit integriertem SELECT)?

    Mir ist schon klar, dass man ja einfach den SELECT für den INSERT-Datensatz ergänzen kann, aber darum geht es mir nicht.

    Danke
    EDIT:
    ach ja: MySQL 4.x darfs sein.
    Zuletzt geändert von kill_bill; 12.05.2005, 15:06.
    (-:
    Bookmarks:·Bilder·Jobs·Recht·
    kostenloser Webkataloge-Assistent

  • #2
    Code:
    UPDATE t1, t2
    SET t1.splate = t2.spalte
    WHERE ...
    so eventuell, wenn nicht, versuche dich mal an REPLACE
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      REPLACE funktioniert nicht, weil mir REPLACE die vom Update nicht betroffenen Datensätze löscht.
      UPDATE werde ich jetzt mal ausprobieren - danke.
      (-:
      Bookmarks:·Bilder·Jobs·Recht·
      kostenloser Webkataloge-Assistent

      Kommentar


      • #4
        Hier meine Baustelle, die natürlich nicht klappt. Irgendwie glaube ich auch nicht daran, dass man so etwas mit UPDATE überhaupt machen kann.
        PHP-Code:
        UPDATE t1
        SET t1
        .country=t2.country
        WHERE t1
        .city=t2.city
        SELECT
          t2
        .city,
          
        t2.country
        FROM t2 
        Wie sinnig/sicher ist das, soetwas dann über eine temporäre HEAP-Tabelle zu realisieren und Originaltabelle per REPLACE zurückzuschreiben?
        (-:
        Bookmarks:·Bilder·Jobs·Recht·
        kostenloser Webkataloge-Assistent

        Kommentar


        • #5
          Original geschrieben von kill_bill
          REPLACE funktioniert nicht, weil mir REPLACE die vom Update nicht betroffenen Datensätze löscht.
          Dann ist wohl Dein REPLACE kaputt ... selbst geschrieben?!?!
          carpe noctem

          [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
          [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

          Kommentar


          • #6
            Original geschrieben von goth
            Dann ist wohl Dein REPLACE kaputt ... selbst geschrieben?!?!
            Sicher - wieso sollte es auch sonst nicht funktionieren?
            Nein, ich glaube, ich habe mich etwas unpräzise ausgedrückt.

            Mein Versuchsaufbau war so ungefähr:
            id|name|city|country

            Befüllt war es dann mit:
            1|meier|meppen| (sprich: letzte Spalte war leer)

            Per REPLACE wollte ich nun bei ID=1 den country-Eintrag ergänzen.
            meier und meppen waren danach allerdings weg.

            @goth Sollte ich den Versuchsaufbau erneut nachbauen oder liege ich da richtig?
            Wie sieht es aus mit der Möglichkeit, ähnliches per UPDATE zu fabrizieren?
            Zuletzt geändert von kill_bill; 12.05.2005, 19:22.
            (-:
            Bookmarks:·Bilder·Jobs·Recht·
            kostenloser Webkataloge-Assistent

            Kommentar


            • #7
              Du musst beim REPLACE dein SELECT so aufbauen, dass die Daten erhalten bleiben, sprich: Sie selektieren
              Ich denke, also bin ich. - Einige sind trotzdem...

              Kommentar


              • #8
                Original geschrieben von mrhappiness
                Du musst beim REPLACE dein SELECT so aufbauen, dass die Daten erhalten bleiben, sprich: Sie selektieren
                Ebent ... zugegebener Maßen funktioniert das allerdings erst bei neueren MySQL Versionen (REPLACE und SELECT mit nur einer Tabelle) ... aber damit geht's dann!
                carpe noctem

                [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                Kommentar


                • #9
                  gibts dafür nicht IN ?

                  also UPDATE tbl_1 SET feld=wert
                  WHERE IN
                  (SELECT * FROM tbl_2
                  WHERE feld=wert)

                  is nich getestet, aber so sollte es irgendwie gehn.
                  MfG
                  aim
                  Lies mich jetzt!
                  - OT-Tags-Liebhaber und BB-Code-Einrücker -

                  Kommentar


                  • #10
                    Ihr habt mir sehr geholfen
                    Die bereits vorhandenen Daten zu selektieren, war aufgrund des Datenvolumens und der etwas rechenintensiven Abfragen nicht mein Ziel, aber ich habe es einfach so gemacht, dass ich die Ergebnisse der komplexen Abfragen temporär in einer HEAP-Tabelle zwischengespeichert, danach ein allumfassendes SELECT per REPLACE eingefügt und daraufhin die temporäre Tabelle vernichtet habe.

                    Das mit dem UPDATE habe ich dann nicht weiter ausprobiert.

                    Danke.
                    (-:
                    Bookmarks:·Bilder·Jobs·Recht·
                    kostenloser Webkataloge-Assistent

                    Kommentar

                    Lädt...
                    X