Update mehrere Datensaetze gleichzeitig
Michael
- datenbank
Moin Moin....
Mit dem SQl Statement UPDATE Tabelle set Pos='1' where Mannschafts_id='6' bekomme ich einen Datensatz upgedatet.
Nur möchte ich 18 Mannschaften gleichzeitig updaten mit einem SQL Statement, kann mir mal jemand auf die Sprünge helfen...
Gruss Michael
Hello,
Mit dem SQl Statement UPDATE Tabelle set Pos='1' where Mannschafts_id='6' bekomme ich einen Datensatz upgedatet.
Nur möchte ich 18 Mannschaften gleichzeitig updaten mit einem SQL Statement, kann mir mal jemand auf die Sprünge helfen...
Möchtest Du denn bei allen betroffenen Datensätzen dasselbe Update durchführen?
Also z.B.: update preise
set rabatt
= rabatt
* 1.5
where rabatt
< 20
Dann würden alle Datensätze, die einen Rabatt kleiner 20 eingetragen haben, geändert werden.
Wenn Du unterschiedliche Dinge mit den Datensätzen machen willst, wird es kompliziert und man verliert auch schnell die Übersicht, ob das Statement bei jedem Satz wie gewünscht funktioniert hat. Man kann zwar hinterher die Affected Rows abfragen, weiß also, wieviele Sätze es getroffen hat, aber leider nicht welche bzw. welche nicht, die es aber eigentlich treffen sollte.
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Moin Tom
Danke für deine schnelle Antwort.
Eigentlich dreht es sich darum das ich jeder Mannschaft eine eindeutige ID gegeben habe.
Ich hab eine Textdatei in der steht die ID und die Punkte.
verloren = 0
unentschieden = 1
gewonnen = 2
ich hab mir da ein php Script gebastelt welche in Variablen die Werte enthält
m_id=1
punkte=1
eigentlich sollte anhand der m_id die dazugehörigen Punkte der Mannschaft zugefügt werden.
Einzeln updaten ist ja kein Thema.
Dafür muss es doch eine Lösung geben ?
Gruss Michael
Hallo Michael,
Eigentlich dreht es sich darum das ich jeder Mannschaft eine eindeutige ID gegeben habe.
vorhin ging es noch um Positionen, die Du aktualisieren wolltest, jetzt auf einmal um Punkte. Um was geht es nun? Bitte poste exakt Deine Tabellen und exakt die Änderungen, die Du durchführen möchtest. Bitte poste exakt den Grund, warum Du diese Änderungen durchführen möchtest.
Ich hab eine Textdatei in der steht die ID und die Punkte.
verloren = 0
unentschieden = 1
gewonnen = 2
ich hab mir da ein php Script gebastelt welche in Variablen die Werte enthält
PHP hat mit SQL nichts zu tun, außer dass Du mit PHP wie mit vielen anderen Programmiersprachen SQL-Statements zusammenbauen und diese an Dein Datenbankmanagementsystem weiterreichen kannst.
Einzeln updaten ist ja kein Thema.
Dafür muss es doch eine Lösung geben ?
Nein, nicht unbedingt, aber vielleicht. Es gibt z.B. den IN-Operator. Du hast noch nicht in Ansätzen erläutert, was Du vorhast. Wie soll man Dir da helfen können?
Ganz wichtig: Welches Datenbankmanagementsystem (MySQL, MS SQL-Server, Oracle, DB2, PostgreSQL, ...) verwendest Du? Bitte die Versionsangabe nicht vergessen.
Freundliche Grüße
Vinzenz
Hello,
Dafür muss es doch eine Lösung geben ?
Eine recht unschöne aber funktionierende Möglichkeit ist diese
update rangliste set punkte = if(id=1,11,if (id=2,22,if(id=13,12,punkte)))
Durch gestaffelte IF() kann man ein Multiupdate mit unterschiedlichen Zuweisungen pro Datensatz erreichen.
http://dev.mysql.com/doc/refman/4.0/de/control-flow-functions.html
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Hallo Tom
Schönen Dank, das war des Rätsels Lösung.
Gruss Michael
Hello,
Schönen Dank, das war des Rätsels Lösung.
Aber nur als Anregung.
Das sollte man noch genauer auf die Perfomance untersuchen.
Eventuell ist ein zusätzliches
where id in (id1, id2, id3, ..., idn)
für die Performance vorteilhaft, da das Where-Statement zuerst ausgewertet wird.
Ich weiß aber nicht, wie intelligent z.B. MySQL das Statement abwickelt, wenn es sich um den Primary-Key handelt im in().
Zusätzliche Sicherheit gibt es aber auf jeden Fall.
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom