PDA

Vollständige Version anzeigen : nach berechnetem Feld sortieren


letts
10.05.2004, 07:20
Hallo,

ich sitze gerade an einer Abfrage, die mir den "Skill" aller Spieler ermittelt. Ich möchte nun erreichen, dass der Spieler mit dem höchsten Skill oben steht und der mit dem niedrigsten ganz unten. Also absteigend sortiert.

Wenn ich absteigend sortiere verlangt er nach zwei Parametern( Ausdrücke). Diese lasse ich ebenfalls in dieser Abfrage errechnen. Liegt möglicherweise dort der Fehler?

Hier einmal die SQL-Ansicht meiner Abfrage:

SELECT tbl_Player.Player_Nick AS Spieler, Sum(([CT_Won]+[T_Won])) AS Kills, Sum(([CT_Lost]+[T_Lost])) AS Deaths, IIf([Deaths]=0,0,Format((NZ([Kills])/NZ([Deaths])),"Fixed")) AS Ratio, Count(tbl_War.War_Date) AS Wars, Format(([Ratio]*[Wars])/([Ratio]+[Wars]),"Fixed") AS Skill, tbl_Player.Player_ID
FROM tbl_Player INNER JOIN (tbl_Maps INNER JOIN tbl_War ON tbl_Maps.Map_ID = tbl_War.PlayedMap_FK) ON tbl_Player.Player_ID = tbl_War.Player_FK
GROUP BY tbl_Player.Player_Nick, tbl_Player.Player_ID;

Muss ich vielleicht diese beiden Ausdrücke( "Ratio" und "Wars") in einer vorherigen Abfrage ermitteln und diese dann als Datengrundlage verwenden?

Für Anregeungen danke ich im Voraus.

Mit grauen Grüßen aus Berlin
letts

J_Eilers
10.05.2004, 07:28
Hi,

und so?

SELECT
tbl_Player.Player_Nick AS Spieler,
Sum(([CT_Won]+[T_Won])) AS Kills,
Sum(([CT_Lost]+[T_Lost])) AS Deaths,
IIf([Deaths]=0,0,Format((NZ([Kills])/NZ([Deaths])),"Fixed")) AS Ratio,
Count(tbl_War.War_Date) AS Wars,
Format(([Ratio]*[Wars])/([Ratio]+[Wars]),"Fixed") AS Skill,
tbl_Player.Player_ID

FROM tbl_Player INNER JOIN
(tbl_Maps INNER JOIN
tbl_War
ON tbl_Maps.Map_ID = tbl_War.PlayedMap_FK)
ON tbl_Player.Player_ID = tbl_War.Player_FK

GROUP BY
tbl_Player.Player_Nick,
tbl_Player.Player_ID

ORDER BY
Skill;

@OT ESL?

letts
10.05.2004, 08:28
Hallo J_Eilers,

zumindest reduziert Deine Variante jetzt die Parameter auf "Skill" :confused: Er will also für "Skill" eine Parameter.

@OT

What does it mean?
Ich spiele in keiner LIGA. Diese kleine DB sollte nur für unseren Clan (http://www.mycwt.de) dienen. Dort werden alle Ergebnisse der gespielten Funwars eingetragen um dann die besten Spieler zu ermitteln, die dann evtl. in der ESL "tätig" werden sollen.

Mit um Hilfe erbittenden Grüßen
letts aka tempt[Providence] ;)

J_Eilers
10.05.2004, 08:35
Kannst du ein MiniBeispiel mit Fantasiedaten hochladen? Leider kann ich von hier keinen Fehler sehen :(

@OT Bedeutet: ad Off topic. ;)

Argh, versuche es mal damit:

SELECT
tbl_Player.Player_Nick AS Spieler,
Sum(([CT_Won]+[T_Won])) AS Kills,
Sum(([CT_Lost]+[T_Lost])) AS Deaths,
IIf([Deaths]=0,0,Format((NZ([Kills])/NZ([Deaths])),"Fixed")) AS Ratio,
Count(tbl_War.War_Date) AS Wars,
Format(([Ratio]*[Wars])/([Ratio]+[Wars]),"Fixed") AS Skill,
tbl_Player.Player_ID AS Ausdr1
FROM
tbl_Player,
tbl_Maps,
tbl_War
GROUP BY
tbl_Player.Player_Nick,
tbl_Player.Player_ID
ORDER BY
Format(([Ratio]*[Wars])/([Ratio]+[Wars]),"Fixed");

letts
10.05.2004, 09:00
...

Das abspecken hat Zeit gekostet.... :bawling:

Liegt im Acc´97 Format vor.

Hab die geänderte Variante ausprobiert:

Er sortiert zwar nach "Skill"; verlangt aber wieder zwei Parameter( "Ratio" und "Wars") ?!?

J_Eilers
10.05.2004, 09:03
Falsches Benutzerkonto...hast du es mal mit meinem Edit versucht?

letts
10.05.2004, 11:22
Hallo J_Eilers,

ich habe nun ein Workaround gemacht und der Abfrage, die den Skill berechnet, als Datengrundlage eine andere Abfrage erstellt.

Das mit dem falschen Benutzerkonto ist auf die fehlende Standard System.mdw zurückzuführen, die hier auf diesem Rechner nicht mehr auffindbar ist. Jede neue DB bedient sich der geänderten *.mdw.

Trotzdem vielen Dank.

Mit leicht sonnigen Grüßen aus Berlin
letts

Nachtrag:

Das SQL-Statement lautet nun:

SELECT
Format([Zaehler]/[Nenner],"Fixed") AS Skill,
abfr_Player_Ranking_3_3.Spieler,
abfr_Player_Ranking_3_3.Ratio,
abfr_Player_Ranking_3_3.Deaths,
abfr_Player_Ranking_3_3.Wars,
abfr_Player_Ranking_3_3.Kills

FROM
abfr_Player_Ranking_3_3

ORDER BY

Format([Zaehler]/[Nenner],"Fixed") DESC;

Wie kann ich nun eine fortlaufende Nummer in diese Abfrage einfügen?
Also Platz 1 für den Spieler mit dem höchsten Skill, ... , und Platz * für den Spieler mit dem niedrigsten Skill?

Die FAQ von Donkarl hab ich nicht verstanden.