Berechnung einer Totalrangliste aus zwei Einzelranglisten
bademeister
- programmiertechnik
0 Cheatah0 bademeister0 MudGuard0 bademeister0 Cheatah
Hallo zusammen.
Ich habe zwei Ranglisten und eine Totalrangliste.
In der Totalrangliste sollten die Rangpunkte jedes Spielers aus den zwei Einzelranglisten zusammengezählt werden.
Nun wie mache ich das nun mit SQL und ASP das am einfachsten.
Problem:
Bei 1000 Einträgen, muss man zuerst den Rang finden in der ersten Rangliste. Das ergibt im Maximum schon gesamt 1000*1000 Rechenabfragen.
Bei zwei Spielen wären wir schon auf 2 Millionen Abfragen.
Gibts nun einen SQL-Befehl oder eine gute Routine die mir das erleichtert.
So in etwa:
SELECT Rangpunkt FROM Rangliste ORDER BY Besterspieler
Damit ich nur noch 1000 Abfragen habe und nicht 1000*1000.
War das irgendwie verständlich?
Gruss Martin
Hi,
In der Totalrangliste sollten die Rangpunkte jedes Spielers aus den zwei Einzelranglisten zusammengezählt werden.
Nun wie mache ich das nun mit SQL und ASP das am einfachsten.
ähm, mit einer Addition der beiden Werte. Zwar unterschlägst Du die wichtigste aller SQL-spezifischen Angaben - das von Dir verwendete DBMS - aber ich bin mir ziemlich sicher, dass auch Deine Datenbank in der Lage ist, zwei Tabellen miteinander zu verknüpfen. Sie ist doch relational, oder?
Cheatah
ich habs falsch geschrieben:
1 tabelle mit folgendem inhalt
username : spiel1 : spiel2 : total
that's all.
martin
Hi,
1 tabelle mit folgendem inhalt
username : spiel1 : spiel2 : total
select username, spiel1+spiel2 as s from tabelle order by s;
Die Spalte total ist überflüssig, da sie sich ja immer aus der Summe der beiden anderen Werte ergibt...
Also genau 1 SQL-Abfrage, nicht 2 Millionen...
cu,
Andreas
Lieber Andreas
Leider zähle ich nicht die Punkte der Spiele zusammen, sondern die Rangpunkte. Also ich muss ja zuerst wissen, auf welchem Rang ein Spieler steht und erst danach kann ich diese Zusammenzählen.
Gruss Martin
Hi,
Leider zähle ich nicht die Punkte der Spiele zusammen, sondern die Rangpunkte. Also ich muss ja zuerst wissen, auf welchem Rang ein Spieler steht und erst danach kann ich diese Zusammenzählen.
SELECT rangliste1.spieler, rangliste1.punkte+rangliste2.punkte FROM
(SELECT ...) AS rangliste1,
(SELECT ...) AS rangliste2
WHERE rangliste1.spieler = rangliste2.spieler
Die beiden inneren Selects sind diejenigen, mit denen Du die Rangpunkte ermittelst. Eventuell möchtest Du aus der Where-Bedingung noch einen Outer Join machen.
Cheatah