SELECT mit UPDATE

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

  • SELECT mit UPDATE

    Hi Leute,

    hab hier leider nix gefunden auch nicht im Manuel nur FOR UPDATE aber
    das hat glaub mit meinem Anliegen nix zu tun.

    Folgendes:
    Ich hab eine einfach Abfrage, diese Betroffenen Datensätze will ich nun
    manche Felder in einer anderen Tabelle Update.

    SELECT email,vorname, nachname, interessen, geburtsdatum,
    FROM s_interessenten
    WHERE typ = 't'
    AND datum < '2008-03-05'

    => die interessen und geburtsdatum will ich jetzt zb in die Tabelle
    s_kunden updaten und anhand der email adresse identifizieren

    Bei ner einfach INSERT bekomm ich das ja wunderbar hin:

    INSERT INTO [TABLE] (FELDER1,FELDER2)
    SELECT * FROM [TABLE] FELDER1,FELDER2
    WHERE test = 1
    usw....

    die Frage ist funktioniert so was auch mit nem UPDATE Befehl? bzw SELECT
    mit Subqueries?

    Ich hab das bisher halt immer meinen SELECT mit PHP ausgelesen und
    dann jeden Betroffenen Datensatz upgedated...is halt umständlich wie ich
    find und denke mir das es mit dem DB Server bestimmt schneller geht.

  • #2
    o_O ? Ja, du kannst UPDATE mit WHERE bedingungen nutzen und ja du kannst Subquery's in UPDATE benutzen. Was hast du vor? Redundanzen schaffen? Die Interessen noch wo anders hin kopieren? Ich erkenn grad keine Logik.

    mfg
    bugbuster
    Zuletzt geändert von Bugbuster; 05.03.2008, 11:15.
    tutorial: peterkropff.de schattenbaum.de tut.php-quake.net
    documentation: php.net mysql.com framework.zend.com

    Die Nachtwache!

    Kommentar


    • #3
      Das dürfte folgendermassen gehen:
      PHP-Code:
      UPDATE 
          s_kunden k
      ,
          
      s_interessenten i
      SET 
          k
      .interessen i.interessen,
          
      k.geburtsdatum i.geburtsdatum
      WHERE 
          k
      .email i.email 
      Den Sinn dieser Aktion sehe ich allerdings auch nicht ein.
      Gruss
      H2O

      Kommentar


      • #4
        ja also ist etwas kompliziert

        Ich will einfach einen SELECT machen auf tabelle A und die betroffenen
        Datensätze mit der tabelle B in Bezug setzten => email

        Alle die ich in Bezug setzten kann will ich zb bestimmte Felder wie Interessen oder Geburtsdatum "übertragen" bzw in diesem Fall updaten
        weil diese ja schon vorhanden sind. ( der Kunden mit der email adresse, die interessen und geburtsdatum felder sind noch leer zb oder veraltet)


        Also zb:

        SELECT interessen,geburtsdatum
        FROM tabelle A as t1
        WHERE t1.typ = 't'
        AND t1.datum < now()
        => ( UPDATE tabelle B as t2 SET t2.interessen = t1.interessen WHERE t2.email = t1.email )

        bisher hab ich halt einfach den SELECT mit mysql_fetch_object in ner
        Schleife mit PHP ausgelesen dann die benötigten Felder ausgelsen
        und dann den entsprechen UPDATE gemacht für jede ROW

        Kommentar


        • #5
          Original geschrieben von tomtherock
          Alle die ich in Bezug setzten kann will ich zb bestimmte Felder wie Interessen oder Geburtsdatum "übertragen" bzw in diesem Fall updaten
          weil diese ja schon vorhanden sind.
          Was macht denn meine Abfrage anderes?
          Original geschrieben von tomtherock
          die interessen und geburtsdatum felder sind noch leer zb oder veraltet
          Das hat man davon, wenn man Daten redundant speichert
          Gruss
          H2O

          Kommentar


          • #6
            super danke dir @H2O

            ja den Sinn könnt ich Euch jetzt erklären wenn ihr wollt?

            Dahinter steckt ne rießige Kundenerfassung inkl. Neu-Interessenten
            sowie Newsletter Datenbank, aber wie gesagt könnte man bestimmt
            besser lösen da ich aber auf ein Externes Programm angewiesen bin
            muss ich da die Daten so aufbereitet

            Kommentar


            • #7
              Was macht denn meine Abfrage anderes?
              Nichts ich hab nur Bugbuster zum gleichen Zeitpunkt geantwortet wie du
              mir . Da hab ich die Lösung von dir noch nicht gesehen...

              Kommentar

              Lädt...
              X