phpbar.de logo

Mailinglisten-Archive

Re: Update mit Werten aus anderer Tabelle
Archiv Mailingliste mysql-de

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Update mit Werten aus anderer Tabelle



Rene Fertig schrieb am Montag, den 23. August 1999:
> Wie kann ich Spalten einer Tabelle mit Werten füllen, die aus einer
> anderen Tabelle stammen? Ein
> 
>   update Tab1, Tab2 set Tab1.B_ID=Tab2.ID where Tab1.Tln_ID=Tab2.Tln_ID;
> 
> quitiert mysql mit einem Syntax-Error.  :-(

An erster Stelle hier meine dicke Empfehlung, speziell bei Syntax-
Fehlern gleich im MySQL-Handbuch nachzusehen, denn die Beschreibung
dort stimmt.  Was da nicht steht, geht auch nicht.
Und in Kapitel "7.16 UPDATE syntax" heißt's:

  UPDATE [LOW_PRIORITY] tbl_name SET col_name1=expr1,col_name2=expr2,...
      [WHERE where_definition]

Also nur ein Tabellenname ...


> Muss ich etwa mit REPLACE arbeiten?

Ja, das ist meines Wissens der einizge Weg, die Aufgabe in MySQL mit
einer einzigen SQL-Anweisung zu lösen.  Erstaunlicherweise ist das
aber kaum langsamer als ein UPDATE ...

  REPLACE INTO Tab1
     SELECT Tab1.feld1, Tab2.feld2, ..., Tab2.ID, Tab1.feld8, ...
     FROM Tab1, Tab2
     WHERE Tab1.Tln_ID=Tab2.Tln_ID;

Im SELECT müssen also alle Felder von Tab1 in der richtigen
Reihenfolge auftauchen und an der gewünschten Stelle der neue Wert.

Damit das richtig funktioniert, muß Tab1 einen PRIMARY KEY haben, da
sonst mit REPLACE INTO nur neue Datensätze hinzugefügt würden, statt
die alten zu ersetzen.

Ciao,
  Martin
-- 
Martin Ramsch <m.ramsch_(at)_computer.org> <URL: http://home.pages.de/~ramsch/ >
PGP KeyID=0xE8EF4F75 FiPr=52 44 5E F3 B0 B1 38 26  E4 EC 80 58 7B 31 3A D7

---
*** Abmelden von dieser Mailingliste funktioniert per E-Mail
*** an mysql-de-request_(at)_lists.4t2.com mit Betreff/Subject: unsubscribe


Home | Main Index | Thread Index

php::bar PHP Wiki   -   Listenarchive