Mailinglisten-Archive |
Hallo, wie wär´s mit zusätzliche Spalte sortierung einfügen, sortierung=id (oder Spalte mit aufsteigenden Zahlenwerten für alphabetische Sortierung) setzen, außerdem zusätzliche Tabelle hilfstabelle anlegen (3 Spalten / 1 Zeile: minsortierung, maxsortierung, idminsortierung), hilfstabelle.minsortierung=min(tabelle.sortierung), hilfstabelle.maxsortierung=max(tabelle.sortierung), hilfstabelle.idminsortierung = entsprechende tabelle.id setzen: Tabelle: id - inhalt - sortierung 1 A 1 2 B 2 3 C 3 4 D 4 5 E 5 Hilfstabelle: minsortierung - maxsortierung - idminsortierung 1 5 1 dann bei jedem Aufruf: UPDATE hilfstabelle RIGHT JOIN tabelle ON hilfstabelle.minsortierung=tabelle.sortierung SET hilfstabelle.minsortierung=min(tabelle.sortierung), hilfstabelle.maxsortierung=max(tabelle.sortierung); UPDATE hilfstabelle INNER JOIN tabelle ON hilfstabelle.minsortierung=tabelle.sortierung SET hilfstabelle.idminsortierung=tabelle.id; UPDATE tabelle LEFT JOIN hilfstabelle ON tabelle.sortierung=hilfstabelle.maxsortierung SET tabelle.sortierung=tabelle.sortierung-1 WHERE tabelle.id<>hilfstabelle.idminsortierung; Tabelle beim ersten Aufruf: id - in halt - sortierung 1 A 1 2 B 1 3 C 2 4 D 3 5 E 4 UPDATE tabelle INNER JOIN hilfstabelle ON tabelle.id=hilfstabelle.idminsortierung SET tabelle.sortierung=hilfstabelle.maxsortierung; Tabelle beim ersten Aufruf: id - in halt - sortierung 1 A 5 2 B 1 3 C 2 4 D 3 5 E 4 Zweiter Aufruf: Hilfstabelle: minsortierung - maxsortierung - idminsortierung 1 5 2 Tabelle: id - inhalt - sortierung 1 A 4 2 B 1 3 C 1 4 D 2 5 E 3 dann . . . 2 B 5 . . . . . . . . . usw. Problematisch sind natürlich INSERTS. Vermutlich muss nach jedem INSERT in der kompletten Tabelle wieder Sortierung = id gesetzt werden. Dann finge die Sortierung nach jedem INSERT wieder bei A an - wäre das schlimm? ALLES UNGETESTET und leider auch etwas umständlich :-( Wenn man den Inhalt der Hilfstabelle stattdessen in Variablen packt (sind ja nur 3 kleine...) wäre es aber wohl schon einfacher... Und vielleicht hat ja jemand eine bessere Idee? :-) Gruß Christiane und Richard >Hallo Liste, > >Ich muß für einen Internetauftritt Anbieterlisten darstellen, der Kunde >wünscht eine sogenannte 'rollierende' Sortierung, d.h. es darf nicht >immer von A - Z sortiert werden, sondern soll entweder durchwechselnd, >oder per Zufall A-B-C...Z, das nächste mal B-C-D...A, dann C-D-E...B >usw. sortiert werden. >Hat jemand damit schon mal zu tun gehabt? >Das Problem ist, daß eh schon eine recht dicke Suche zum Aufruf der >Daten notwendig ist, ich möchte jetzt nicht auch noch alles in Arrays >laden und per Index abarbeiten - wenn's geht. > >Für jede Hilfe super dankbar! > >Hermann > > >-- >Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter >-->> http://www.4t2.com/mysql -- Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter -->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive