hi,
ich hab etwas gefunden, was schon sehr gut geht !
SET @c := 0;
UPDATE `tabelle` SET `position` = ( SELECT @c := @c + 1 )
ORDER BY id ASC;
... schreibt den fortlaufenden Zähler in das Feld 'position'.
Meine Tabelle ist dann aber doch komplexer ;)
+------+-----------------------+-----------+
| id | text | gruppe | position |
+======+===========+===========+===========+
| 1 | irgendwas | 1 | 0 |
+------+-----------------------+-----------+
| 3 | irgendwas | 2 | 0 |
+------+-----------------------+-----------+
| 5 | irgendwas | 2 | 0 |
+------+-----------------------+-----------+
| 6 | irgendwas | 3 | 0 |
+------+-----------------------+-----------+
| 16 | irgendwas | 1 | 0 |
+------+-----------------------+-----------+
SET @c := 0;
UPDATE `tabelle` SET `position` = ( SELECT @c := @c + 1 )
WHERE `gruppe` = 1
ORDER BY id ASC;
... schreibt den fortlaufenden Zähler in das Feld 'position'
für alle, die dem Kriterium gruppe
= 1 entsprechen.
Um innerhalb aller Gruppen zu sortieren, müsste ich das
Ganze in diesem Fall für jede Gruppe absetzen. Da wäre
ich wieder bei einer Schleife ... die ich natürlich gerne
vermeiden würde ;)
Sollte das gehen ? Hat jemand einen Tipp ?
danke und
beste gruesse,
heinetz