mysqlstarter: mysql: UPDATE mit kriterium aus andere Tabelle

Hallo,

ich habe folgendes problem:

tabelle2 ist eine untermenge von tabelle1 - die struktur ist bei beiden gleich.

ich will in einer spalte von tabelle1 alle werte in denjenigen zeilen aendern, die in tabelle2 existieren.

//alle zeilen aus tabelle2 holen
SELECT spalteIn2 FROM tabelle2 WHERE wert!=''

//in tabelle1 alle aendern, die in tabelle2 vorkommen
UPDATE tabelle1 SET spalte=wert WHERE [in etwa: tabelle2.spalteIn2 != '']

wie kann ich das in mysql realisieren???

ich muss das ergebnis des SELECT aus tabelle2 als UPDATE-kriterium in das UPDATE von tabelle1 reinbekommen.

gruss,

guido

  1. Hallo Guido,

    tabelle2 ist eine untermenge von tabelle1 - die struktur ist bei beiden gleich.

    Mit anderen Worten: Die Tabellen sind weitgehend redundant (d.h. sie
    enthalten teilweise die gleichen Daten doppelt)?
    Dann ist Dein Datenbank-Design nicht gerade optimal...

    ich will in einer spalte von tabelle1 alle werte in denjenigen zeilen aendern, die in tabelle2 existieren.
    wie kann ich das in mysql realisieren???

    Mit einem entsprechenden "JOIN" Befehl. Siehe:
    http://www.mysql.com/doc/de/JOIN.html

    Thomas
      der gerade keine Lust hat, eine vollstaendige Loesung
      auf dem Silbertablett zu liefern ;-)

    1. Hallo Thomas,

      enthalten teilweise die gleichen Daten doppelt)?

      Yep. Nach dem Abgleich wird die kleinere Tabelle auch geloescht.

      Dann ist Dein Datenbank-Design nicht gerade optimal...

      im Moment bin ich erst am aufbauen; was ich habe sind ein paar chaotische Exceltabellen - eine komplette Liste und einen Ausschnitt der  Liste mit Vermerken in einer Spalte.

      Das ist leider mein Material; etwa 4500 Datensaetze.

      http://www.mysql.com/doc/de/JOIN.html

      Werd ich mir anschauen.

      der gerade keine Lust hat, eine vollstaendige Loesung
        auf dem Silbertablett zu liefern ;-)

      is recht.

      Gruss,

      Guido

  2. ich muss das ergebnis des SELECT aus tabelle2 als UPDATE-kriterium in das UPDATE von tabelle1 reinbekommen.

    UPDATE tabelle1 t1, tabelle2 t2
    SET t1.spalte = t2.spalte
    WHERE t1.id = t2.id

    1. Hallo Mulder,

      UPDATE tabelle1 t1, tabelle2 t2
      SET t1.spalte = t2.spalte
      WHERE t1.id = t2.id

      funktionierte leider nicht... :-(

      ERROR 1064: You have an error in your SQL syntax near 'verschicktv10.Mailingstatus
      SET KundenDB_kopie.Mailingstatus=verschicktv10.Maili' at line 1

      ???aber welcher???

      dennoch danke!

      Gruss,

      Guido