habe mich gefragt ob es möglich ist ein einem einzigen Query folgende Sachen unterzubringen:
Das Query besteht aus einem INSERT INTO verknüpft mit ON DUPLICATE KEY UPDATE (ist übrigens ne Fortführung von nem Problem das bereits hier mal gelöst wurde

In der Tabelle sind ein paar Spalten mit verschiedenen Parametern zu verschiedenen User IDs (die alle mehrmals vorhanden sein können).
Eine weitere Spalte (um die es geht) soll bei jedem INSERT INTO um eins erhöht werden.
Hier mal ein kleiner Ausschnitt:
Code:
+-----------+------------+--------------+-------------+ | userid | attribut | wert | increment | +-----------+------------+--------------+-------------+ | 1 | 5 | 8 | 1 | | 1 | 6 | 2 | 2 | | 3 | 2 | 4 | 1 | | 5 | 5 | 6 | 1 | | 3 | 4 | 7 | 2 | | 3 | 4 | 7 | 3 | +-----------+------------+--------------+-------------+
// Der Increment Wert startet für jede UserID bei 1
Für den Fall dass es ein bestimmtes Attribut für die jew. UserID bereits besteht, wird der Wert verändert, falls nicht wird das Attribut und der Wert neu eingefügt:
Code:
INSERT INTO `table`( userid, attribut, wert) VALUES ( '3', '5', '6' ) ON DUPLICATE KEY UPDATE wert = wert + 6;
Der increment Wert sollte sich folglich für diese id um 1 erhöhen, d.h. die neue Zeile lautet:
Code:
| 3 | 5 | 6 | 4 |
Code:
INSERT INTO `table` ( userid, attribut, wert, increment ) VALUES ( '3', '5', '6', ( SELECT `increment` FROM `table` WHERE userid =3 ORDER BY `listorder` DESC LIMIT 1 )) ON DUPLICATE KEY UPDATE wert = wert + 6;
Code:
#1093 - You can't specify target table
Danke im Vorraus für hilfreiche Antworten!
Gruß!
(kleiner Nachtrag: Leute, die absolut nicht vorhaben auf das Problem einzugehen, sondern nur irgendwelche unnötigen Kommentare ablassen wollen - klickt unten auf vorheriges Thema und nervt bitte nicht mich...)
Einen Kommentar schreiben: