Mailinglisten-Archive |
Bruno Haller wrote: >Hallo, >ich hatte schonmak eine Lösung hierfür, hab Sie aber irgendwie verschlampert. >Wie krieg ich aus einer Spalte "userID", die durchnummeriert ist mit Integern die niedrigste >freie. >Also z.b. gibt es die IDs: 1,2,3,4,5,6,7,8,9,10 >Jetzt entschliesst sich User 3 und 7 sich rauszulöschen. >Die Query muss nun 3 ergeben, beim nächsten mal (wenn 3 wieder belegt ist) soll 7 rauskommen. Ich hab zwar keine direkte Lösung für dich. (Ausser Row um Row durchzugehen = langsam) aber vielleicht hilft dir meine Lösung für das selbe Problem: 1. Ich erstelle in jeder Tabelle ein LoeschFlagFeld (z.B int). 2. Dieses Feld ist indiziert. 3. Normalerweise(bei gültigen Datensätzen) hat diese Feld den Inhalt 0. 4. User sehen in Abfragen über eine Applikation nur Datensätze bei denen LoeschFlagFeld=0. 5. Ich lösche 3 und 7 nicht wirklich sondern setzte das gelöscht Flag auf 1. (z.b INT) 6. Wenn ich die niedrigste 'freie' Nummer suche nehme ich "select min(NUMMER) where LoeschFlagFeld=1) 7. Das ist auch bei grossen Datensatzmengen (zur Zeit 2 Mill. Rows) sehr schnell. Paul
php::bar PHP Wiki - Listenarchive