Kære udviklere,
Nu ligger landet sådan at jeg er ved at bygge et League of Legends website. Dette website skal bruges til at slå en summoner op, tjekke stats, aktive games og meget mere.
Jeg er så stødt ind i et SQL problem. Egentlig ikke et problem med selve SQL'en, men selve forståelsen for hvad jeg egentlig gerne vil sortére efter.
Jeg benytter mig af Riot Games API'et, hvilket er totalt irrelevant for jer.
Min tabel `championPerformances` ser således ud
-------------------------
| championPerformance ID |
| fk_summoner_id |
| fk_champion_id |
| totalChampionKills |
| totalAssists |
| totalDeathsPerSession |
| totalSessionsPlayed |
| totalSessionsLost |
| totalSessionsWon |
-------------------------
Det er ret sigende hvilket slags data jeg får ind, så det går jeg ikke mere ind i.
Basicly så handler det bare om at jeg looper igennem API'et, og finder hver champion der er spillet af den summoner/spiller som man besøger på nuværende tidspunkt.
Problemstilling:
Jeg vil gerne sortére efter performance for den enkelte champion. Dvs. jeg dividerer `totalSessionsWon` med `totalSessionsPlayed` og ganger med 100 for at få procent. Dog er det ikke helt det jeg vil. For hvis vi f.eks. siger at der er en champion der er spillet 1 gang, og har vundet det game, så kommer performance til at være 100%. Dog hvis en champion har spillet 74 games (49 wins og 25 losses) er performance 66,2%.
Hvad jeg gerne vil have:
Hvis vi tager overstående eksempel, vil jeg gerne have at den champion med flest games spillet kommer før den champion med 100% performance.
Eksempel på hvad jeg har nu:
BilledeSom man kan se står 'Bard' over 'Vayne', hvor jeg gerne vil have 'Vayne' til at stå øverst.
Her har vi et andet site der har gjort det rigtigt - og med samme data som jeg har:
LinkJeg håber at I kan følge mit problem, og evt. give et skud på hvad der skal gøres.
Min nuværende SQL for udskrivningen:
- SELECT
- championPerformances.*,
- ( totalSessionsPlayed ) AS skillScore,
- ( totalChampionKills / totalSessionsPlayed ) AS killsRatio,
- ( totalDeathsPerSession / totalSessionsPlayed ) AS deathsRatio,
- ( totalAssists / totalSessionsPlayed ) AS assistsRatio,
- ( ( totalSessionsWon / totalSessionsPlayed ) * 100 ) AS winRatio
- FROM
- championPerformances
- INNER JOIN
- champions
- ON fk_champion_id = {championID}
- WHERE
- fk_summoner_id = {summonerID}
- ORDER BY
- winRatio DESC
Egentlig er det bare et SQL problem