MySQL abfrage einschränken

Probleme bei der regulären Arbeiten mit phpBB, Fragen zu Vorgehensweisen oder Funktionsweise sowie sonstige Fragen zu phpBB im Allgemeinen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.1, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
mirk
Mitglied
Beiträge: 191
Registriert: 03.09.2003 16:32
Kontaktdaten:

MySQL abfrage einschränken

Beitrag von mirk »

die jetztige db abfrage aus einem teil des activity mods sieht so aus.

Code: Alles auswählen

$sql = "SELECT * FROM " . iNA_SCORES . "
            WHERE game_name = '" . $game_name . "'
            ORDER BY score DESC";
und liefert eine liste mit allen usern die das bestimmte game gespielt haben und die dazu gehörige punktzahl. ein user kann 50 mal spielen, wird 50 mal in der tabelle gespeichert und mit der abfrage taucht er auch 50x in der liste auf.

kann mir jemand die abfrage so umschreiben das jeder user in der liste nur noch einmal auftaucht. und zwar mit der höchst errichten punktzahl.


tabellenfelder:

Code: Alles auswählen

  `game_name` varchar(255) default NULL,  ---->name des spiels
  `player` varchar(40) default NULL,---->name des spielers
  `score` int(10) unsigned NOT NULL default '0', ----   > erreichten punkte
  `date` int(11) default NULL---->datum
Benutzeravatar
D@ve
Ehemaliges Teammitglied
Beiträge: 3842
Registriert: 28.08.2002 19:33
Wohnort: Bretzfeld
Kontaktdaten:

Re: MySQL abfrage einschränken

Beitrag von D@ve »

mirk hat geschrieben:die jetztige db abfrage aus einem teil des activity mods sieht so aus.

Code: Alles auswählen

$sql = "SELECT * FROM " . iNA_SCORES . "
            WHERE game_name = '" . $game_name . "'
            ORDER BY score DESC";
und liefert eine liste mit allen usern die das bestimmte game gespielt haben und die dazu gehörige punktzahl. ein user kann 50 mal spielen, wird 50 mal in der tabelle gespeichert und mit der abfrage taucht er auch 50x in der liste auf.

kann mir jemand die abfrage so umschreiben das jeder user in der liste nur noch einmal auftaucht. und zwar mit der höchst errichten punktzahl.


tabellenfelder:

Code: Alles auswählen

  `game_name` varchar(255) default NULL,  ---->name des spiels
  `player` varchar(40) default NULL,---->name des spielers
  `score` int(10) unsigned NOT NULL default '0', ----   > erreichten punkte
  `date` int(11) default NULL---->datum
Sorry, hab gerade keine Zeit zu großen Experimenten aber probier mal:

Code: Alles auswählen

SELECT player, score FROM games WHERE gamename = 'bla' GROUP BY player ORDER BY score DESC;
Sollte funktionieren, aber: Alle Angaben ohne Gewähr...

Gruß, Dave
There are only 10 types of people in the world: Those who understand binary, and those who don't
mirk
Mitglied
Beiträge: 191
Registriert: 03.09.2003 16:32
Kontaktdaten:

Beitrag von mirk »

habs mal so umgeschrieben:

Code: Alles auswählen

    $sql = "SELECT score, player FROM " . iNA_SCORES . "
            WHERE game_name = '" . $game_name . "'
            GROUP BY player
	    ORDER BY score DESC";
es wird jetzt jeder user nur einmal angezeigt genau wie ich es wollte. aber leider nicht mit seiner bestleistung (höchsten punktzahl).

wie schaffe ich es das die höchste punktzahl pro spieler gezeigt wird?
mirk
Mitglied
Beiträge: 191
Registriert: 03.09.2003 16:32
Kontaktdaten:

Beitrag von mirk »

haben wir keinen mysql profi hier wo mir das schnell sagen kann?

also grundsetzlich muss man einfach die tabellen ergebnisse nach player gruppieren(das haben wir ja jetzt) und nur noch den höchsten score auslesen. hab nicht so gross ahnung aber ich dänke das es nicht so schwirig ist. gibts nicht ne funktion MAX oder so?
Benutzeravatar
D@ve
Ehemaliges Teammitglied
Beiträge: 3842
Registriert: 28.08.2002 19:33
Wohnort: Bretzfeld
Kontaktdaten:

Beitrag von D@ve »

Max gibt's leider nur in SQL...
There are only 10 types of people in the world: Those who understand binary, and those who don't
mirk
Mitglied
Beiträge: 191
Registriert: 03.09.2003 16:32
Kontaktdaten:

Beitrag von mirk »

gibt es keine andere variante?
Antworten

Zurück zu „phpBB 2.0: Administration, Benutzung und Betrieb“