Hey,
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:
// userid und attribut sind primary keys
// 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:
Nun würde ich gerne noch den increment Wert für eben diese Userid um eins erhöhen. Ich nehme das Query von oben, wenn dieses ausgeführt wird ensteht eine neue Zeile (da attribut = 5 noch nicht für userid = 3 existiert).
Der increment Wert sollte sich folglich für diese id um 1 erhöhen, d.h. die neue Zeile lautet:
Jetzt bin ich mir absolut nicht sicher ob es möglich ist, dies noch in das obige Query mit reinzupacken. Ein Subquery dieser Art:
ist ja leider nicht möglich:
Hat irgendjemand ne Idee, das vll doch noch alles in ein einzelnes Query zu packen (ohne dabei ne temp. Tabelle zu erstellen o.ä. eher Ressourcen unfreundliches Zeug - sonst drösel ichs doch in mehrere Queries auf)?
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...)
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...)
Kommentar