[PHP/MySQL] Resultaat berekenen in mysql of in php?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • maxtz0r
  • Registratie: Februari 2007
  • Laatst online: 17-12-2022
Hoi tweakers,

Ik gebruik een volgende query:
code:
1
2
3
4
SELECT a. * , b. *
FROM jos_cul_gameplayers AS a
LEFT JOIN jos_cul_player AS b ON a.player_id = b.id
WHERE a.ladder_id =1


Het resultaat geeft een lijst met scores van ladder met id 1, zie:
code:
1
2
3
4
5
6
7
id  player_id   games_id    ladder_id   result  score   id  name    mail    approved
11  2   2   1   0   9   2   playerb     playerb@hotmail.com     yes
12  3   2   1   1   20  3      playerc  playerc@gmail.com       yes
13  1   3   1   1   20  1   playera     playera@hotmail.com     yes
14  2   3   1   0   14  2   playerb playerb@hotmail.com     yes
15  1   4   1   1   20  1   playera     playera@hotmail.com             yes
16  3   3   1   0   19  3   playerc     playerc@gmail.com       yes


Nu wil ik eigenlijk een ranking overzicht maken waarbij totale score(score kolom optellen), aantal win(result = 1) en verlies partijen(result = 0) en totaal aantal partijen gespeeld per speler getoond wordt. Naar mijn weten lijkt me dit niet op te lossen te zijn door 1 query en moet dit dus in php. Ik heb alleen geen idee hoe ik eerst per speler de scores kan berekenen om ze vervolgens te tonen. Kan iemand mij opweg helpen?

Dying is God's way of telling you, you've been FIRED.


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Volgens mij is dit goed te doen met wat aggregates als sum, count etc. :?

Even uit de losse pols; zoiets:
SQL:
1
2
3
4
5
6
SELECT x.player_id, sum(x.score) as tot_score, count(x.games_id) as played_games, 
    sum(x.result) as won_games, sum(x.games_id) - sum(x.result) as lost_games
FROM jos_cul_gameplayers AS a
LEFT JOIN jos_cul_player AS b ON a.player_id = b.id
WHERE a.ladder_id =1
group by player_id

waarbij x vervangen dient te worden door a/b

[ Voor 80% gewijzigd door RobIII op 06-01-2011 16:08 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • maxtz0r
  • Registratie: Februari 2007
  • Laatst online: 17-12-2022
RobIII schreef op donderdag 06 januari 2011 @ 16:03:
Volgens mij is dit goed te doen met wat aggregates als sum, count etc. :?

Even uit de losse pols; zoiets:
SQL:
1
2
3
4
5
6
SELECT x.player_id, sum(x.score) as tot_score, count(x.games_id) as played_games, 
    sum(x.result) as won_games, sum(x.games_id) - sum(x.result) as lost_games
FROM jos_cul_gameplayers AS a
LEFT JOIN jos_cul_player AS b ON a.player_id = b.id
WHERE a.ladder_id =1
group by player_id

waarbij x vervangen dient te worden door a/b
Holy crap je hebt gelijk. Ik moest alleen sum(x.games_id) - sum(x.result) veranderen naar count(x.games_id) - sum(x.result) en het werkt!

Zo logisch, zal wel het gebrek aan ervaringlees iq zijn. Thnx!

Dying is God's way of telling you, you've been FIRED.