PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   Problem mit Highscore auslesen (http://www.selfphp.de/forum/showthread.php?t=15815)

Bogi 10.01.2007 09:30:08

[GELÖST] Problem mit Highscore auslesen
 
Hallo!
Ich hab folgendes Problem:
Ich habe eine Highscore-Tabelle für ein Arcade-Games-Script, mit folgenden Spalten:game, username, score, gameid

Jetzt brauch ich von jedem Game nur den jeweils höchsten Score, in dieser Tabelle sind aber alle Scores gespeichert.

Wenn möglich, will ich das nur durch die richtige SQL-Abfrage erzielen, da ich sonst das Script selbst auch noch umschreiben muss.

Zur Zeit läufts so ab:
PHP-Code:

    $wingamer $db->query("SELECT * FROM bb".$n."_arcade_session_aktiv ORDER BY zeit DESC");

    
$si=0;$sx=0;
    
    while(
$row $db->fetch_array($wingamer)) {
        if(
$sx==0){
            
$highscoreuser = array();
            
$highscoreuser[0] = $row['game'];
            
$highscoreuser[1] = $row['username'];
            
$highscoreuser[2] = $row['score'];
            
$highscoreuser[3] = $row['gameid'];
        }        
        if(
$row['userid']==$wbbuser){        
            
$winthumb="";            
            
$winthumb=$win_a_thumb[$row[gameid]];
        
            
$gamehits_bit.="&nbsp;<a href='arcade_gold_light.php?action=playgame&amp;gameid=$row[gameid]#sa'><img src='$config[imageurl]$winthumb' width='20' height='20' border='0' alt='{$lang->items['LANG_ARCADEG_HEADHIGH']} $row[score] {$lang->items['LANG_ARCADEG_PUNKTEN']}' /></a>";
            
$gamehits_bit.="&nbsp;<span class='smallfont'>$row[name]</span>";
            
$si++;
        }
    
$sx++;    
    } 

In der session_aktiv-Tabelle stehen alle ersten Plätze.
Da es aber Probleme mit den Sessions gibt bzw ich dieses Feature gar nicht brauche, muss ich aus der Tabelle auslesen, wo ALLE scores drin stehen.

Danke schon mal für Hilfe!

mfg, Bogi

BenniG. 10.01.2007 11:18:09

AW: Problem mit Highscore auslesen
 
Code:

SELECT gamename, max(score) FROM TABELLE

Bogi 10.01.2007 11:26:06

AW: Problem mit Highscore auslesen
 
danke für die antwort ...

so funktionierts leider nicht hab ich auch schon probiert.

Erstmal benötigt max() GROUP BY und egal, nach welcher spalte ich es gruppiere, es wird leider nie das richtige ausgegeben

BenniG. 10.01.2007 11:27:20

AW: Problem mit Highscore auslesen
 
Stimmt, das group by hab ich vergessen..
Code:

SELECT gamename, max(score) FROM TABELLE GROUP BY gamename
Aber ohne deine Tabellenstruktur zu kennen kann man nur im trüben stochern..

Bogi 10.01.2007 11:39:44

AW: Problem mit Highscore auslesen
 
Liste der Anhänge anzeigen (Anzahl: 1)
hmmm,leider funktionierts so nicht ...

Also, die Tabelle hat folgende Spalten:
scoreid, gameid, game, date, time, userid, username, score, comment
wobei gameid, game, userid, username und score relevant sind und nach time sortiert werden soll.

Es stehen in der Tabelle alle Scores aller user drin ...
z.b. (siehe Anhang)

Daraus wird ersichtlich, dass der Eintrag mit der scoreid 1 den besten Score hat, alle anderen Einträge mit der gleichen GameID sollen nun ignoriert werden.

mfg

BenniG. 10.01.2007 11:53:51

AW: Problem mit Highscore auslesen
 
MySQL-Version?

Das hier mal probieren, sollte dir erstmal alle maximalen Scores pro Game liefern
Code:

select gameid, max(score)max_score from tabelle group by gameid
Den Rest zum Score auslesen (geht imo nur über subquery):
Code:

select tabelle.gameid, tabelle.game, tabelle.userid, tabelle.username, tabelle.score
from
        tabelle,
        ( select gameid, max(score)max_score from tabelle group by gameid ) max_scores
where
        tabelle.gameid=max_scores.gameid
        and tabelle.max_score = max_scored.max_score
order by
        tabelle.date,
        tabelle.time


Bogi 10.01.2007 12:07:58

AW: Problem mit Highscore auslesen
 
Vielen Dank!
Doch ich hab Probleme mit dem Einbinden.

Könntest du mir das ganze Erklären, komm damit nicht so ganz zurecht ;)

mfg

edit:
Falls ich alles richtig angepasst hab, kommt lediglich dieser fehler:
mysql error: Unknown column 'bb1_arcade.max_score' in 'where clause'

edit2:
so siehts jetzt bei mir aus:
Zitat:

$wingamer = $db->query("
select bb".$n."_arcade.gameid, bb".$n."_arcade.game, bb".$n."_arcade.userid, bb".$n."_arcade.username, bb".$n."_arcade.score
from
bb".$n."_arcade,
(select gameid, max(score)max_score from bb".$n."_arcade group by gameid ) max_scores
where
bb".$n."_arcade.gameid=max_scores.gameid
and bb".$n."_arcade.max_score = max_scores.max_score
order by
bb".$n."_arcade.date,
bb".$n."_arcade.time
");

BenniG. 10.01.2007 12:42:19

AW: Problem mit Highscore auslesen
 
Versuchs mal so:
PHP-Code:

$wingamer $db->query("
select 
    score.gameid, score.game, score.userid, score.username, score.score
from
    bb"
.$n."_arcade score,
    (select gameid, max(score)max_score from bb"
.$n."_arcade group by gameid ) max_scores
where
    score.gameid=max_scores.gameid
    and score.score = max_scores.max_score
order by
    score.date,
    score.time
"
); 

Geht aber erst ab MySQL >=4.1

Bogi 10.01.2007 12:45:27

AW: Problem mit Highscore auslesen
 
danke, habs grad selbst rausgefunden ;)
PHP-Code:

and bb".$n."_arcade.score max_scores.max_score 

hab aber jetzt trotzdem deine upgedatete Version verwendet, da die um einiges schöner is ;)

Also, herzlichen Dank für die Hilfe :)

mfg


Alle Zeitangaben in WEZ +2. Es ist jetzt 07:41:25 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.