Rangfolge ändern
Geizhals » Forum » Programmierung » Rangfolge ändern (15 Beiträge, 239 Mal gelesen) Top-100 | Fresh-100
Du bist nicht angemeldet. [ Login/Registrieren ]
...
Re(3): Rangfolge ändern
03.09.2008, 23:10:28
Hmm, mit C (&Co) habe ich noch nie gespielt. Ich verwende seit ca. 25 Jahre ausschliesslich Basic. VB, VBScript, VBA... :-))

Ich sehe das ich ein Denkfehler gemacht habe: in zwei Schritte geht es nicht: in Schritt eins wird der eine Rang geändert, in Schritt zwei der andere Rang. Nach Schritt 1 sind natürlich 2x der gleiche Wert vorhanden! Mit ein UNIQUE kriegst du dort schon einen Fehler... Ohne UNIQUE: Wenn du dann Schritt 2 ausführen willst, gibt es 2x der gleiche Wert, wobei er beide ändert: Chaos...

Aber mit einen Trick sollte es gehen:

(Wieder gilt:
Person X, Rang 7.
Person Y, Rang 8.
Person Y soll einen Rang rauf gehen.
Du erhälst also Rang=8 und Delta=-1.)

1. Schritt:
UPDATE Roster SET RANG = (Rang) WHERE RANG = (Rang + Delta/2);
Ergebnis: Person X (Rang+Delta: 8 + -0.5 = 7.5) kriegt Rang 7.5.

2. Schritt: Genau umgekehrt: ändere der Rang der aktuellen Person:
UPDATE Roster SET RANG = (Rang + Delta) WHERE RANG = Rang;
Ergebnis: Person Y kriegt Rang 8.

3. Schritt: Wiederhole Schritt 1:
UPDATE Roster SET RANG = (Rang) WHERE RANG = (Rang + Delta/2);
Ergebnis: Person X (Rang+Delta: 7.5 + -0.5 = 7) kriegt Rang 7.

Jetzt sollte nie zweimal der gleiche Wert anwesend sein. Du musst natürlich der Spalte RANG für Non-Integer Werte definieren...


Save the Earth... it's the only planet with chocolate.

Ich glaube, die Evolution hat gemerkt, dass Intelligenz nichts bringt und geht jetzt wieder in die Gegenrichtung
Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
 

Dieses Forum ist eine frei zugängliche Diskussionsplattform.
Der Betreiber übernimmt keine Verantwortung für den Inhalt der Beiträge und behält sich das Recht vor, Beiträge mit rechtswidrigem oder anstößigem Inhalt zu löschen.
Datenschutzerklärung