mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Mo 05.12.2016 15:56 Benutzername: Passwort: Auto-Login

Thema: [MySQL]: Highscore-Sortierung gesucht vom 05.04.2005


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> [MySQL]: Highscore-Sortierung gesucht
Autor Nachricht
lordle
Threadersteller

Dabei seit: 14.12.2001
Ort: Augsburg
Alter: 40
Geschlecht: Männlich
Verfasst Di 05.04.2005 16:46
Titel

[MySQL]: Highscore-Sortierung gesucht

Antworten mit Zitat Zum Seitenanfang

ich bin grad etwas blind.
Ich hab ne Highscore-Tabelle, in der jede Punktzahl eingetragen wird (ich will wissen, wer wie oft mit welchem ergebnis gespielt hat, um evtl. cheater aufzudecken).
für den highscore, möcht ich aber dann die maximal erreichte punktzahl pro Benutzer mit seinem profil eintragen.
Dafür folgende Highscore-Tabelle:

Code:
|------------||------------||------------||------------|
     ID           SCORE        BENUTZER      PROFIL
|------------||------------||------------||------------|
     1            234           depp1         looser
|------------||------------||------------||------------|
     2            450           depp2       cooler sack
|------------||------------||------------||------------|
     2            500           depp1       cooler sack
|------------||------------||------------||------------|
     2            150           depp2         looser
|------------||------------||------------||------------|
     2            460           depp2       cooler sack
|------------||------------||------------||------------|


mein erster SQL-Code:
Code:
SELECT MAX(SCORE) AS SCORE, BENUTZER, PROFIL
         FROM HIGHSCORE
         GROUP BY BENUTZER
         ORDER BY SCORE DESC


Bekomm dann aber als ergebnis komischerweise:
Code:
1. depp1   500pkt    looser
2. depp2   460pkt    cooler sack


Die Punkte und Benutzerzuordnung stimmt, aber das Profil ist das erste, welches derjenige erreicht hat. (Ich war zu faul, um eine 1:n Beziehung für das Profil aufzubauen, deswegen steht das Profil im Klartext daneben)

mein zweiter SQL-Code
Code:
SELECT SCORE, BENUTZER, PROFIL
         FROM HIGHSCORE
          HAVING MAX(SCORE) = SCORE
         ORDER BY SCORE DESC

Damit krieg ich kein Ergebnis. Ich peils hat grad überhaupt net, was mach ich flasch?
  View user's profile Private Nachricht senden
Skyw4lker

Dabei seit: 30.08.2004
Ort: Bergisch Gladbach
Alter: 36
Geschlecht: Männlich
Verfasst Mi 06.04.2005 08:27
Titel

Antworten mit Zitat Zum Seitenanfang

du kannst im Projektionsteil (das nach dem SELECT) , wenn du eine Gruppenfunktion verwendest (hier MAX), nur
spalten einsetzen die auch hinter dem GROUP BY stehen.

also entweder
Code:

SELECT MAX(SCORE) AS SCORE, BENUTZER, PROFIL
         FROM HIGHSCORE
         GROUP BY BENUTZER,PROFIL
         ORDER BY SCORE DESC

was aber nicht soviel sinn machen würde
daher
Code:

SELECT MAX(SCORE) AS SCORE, BENUTZER
         FROM HIGHSCORE
         GROUP BY BENUTZER
         ORDER BY SCORE DESC


die having komponente ist nur nach GROUP BY zugelassen, daher funktioniert das hier nicht
Code:

SELECT SCORE, BENUTZER, PROFIL
         FROM HIGHSCORE
          HAVING MAX(SCORE) = SCORE
         ORDER BY SCORE DESC


Zuletzt bearbeitet von Skyw4lker am Mi 06.04.2005 08:31, insgesamt 2-mal bearbeitet
  View user's profile Private Nachricht senden
Anzeige
Anzeige
Account gelöscht


Ort: -
Alter: -
Verfasst Mi 06.04.2005 08:46
Titel

Antworten mit Zitat Zum Seitenanfang

*Thumbs up!* Das raff ich irgendwie auch nie bis zum Letzten...
 
Skyw4lker

Dabei seit: 30.08.2004
Ort: Bergisch Gladbach
Alter: 36
Geschlecht: Männlich
Verfasst Mi 06.04.2005 09:59
Titel

Antworten mit Zitat Zum Seitenanfang

ich hab vor 3 wochen ne fette Klausur über DB Programmierung geschrieben und seit dem weiss ichs *zwinker*
  View user's profile Private Nachricht senden
lordle
Threadersteller

Dabei seit: 14.12.2001
Ort: Augsburg
Alter: 40
Geschlecht: Männlich
Verfasst Mi 06.04.2005 10:47
Titel

Antworten mit Zitat Zum Seitenanfang

Skyw4lker hat geschrieben:
(...)
Code:

SELECT MAX(SCORE) AS SCORE, BENUTZER, PROFIL
         FROM HIGHSCORE
         GROUP BY BENUTZER,PROFIL
         ORDER BY SCORE DESC

was aber nicht soviel sinn machen würde
daher
Code:

SELECT MAX(SCORE) AS SCORE, BENUTZER
         FROM HIGHSCORE
         GROUP BY BENUTZER
         ORDER BY SCORE DESC

öhm. funktioniert leider auch keins davon?
ich hab die faxen dicke! ich wechsle auf 4.1 und dann gibs subselects. ende aus! *G*
  View user's profile Private Nachricht senden
Skyw4lker

Dabei seit: 30.08.2004
Ort: Bergisch Gladbach
Alter: 36
Geschlecht: Männlich
Verfasst Mi 06.04.2005 14:07
Titel

Antworten mit Zitat Zum Seitenanfang

was kriegst du denn zurück?
das gleiche wie oben ?

btw ich hab die tabelle mal so erstellt und den Select
Code:

SELECT MAX(SCORE) AS SCORE, BENUTZER
         FROM HIGHSCORE
         GROUP BY BENUTZER
         ORDER BY SCORE DESC

probiert und der tuts,

gruss

Stefan


Zuletzt bearbeitet von Skyw4lker am Mi 06.04.2005 14:17, insgesamt 3-mal bearbeitet
  View user's profile Private Nachricht senden
 
Ähnliche Themen MySQL/PHP sortierung
[PHP, MySQL] Sortierung bei Abfrage
[PHP/MySQL] Sortierung einer Liste
[PHP / MySQL] MySQL-Funktion gesucht: letzteÄnderungTabelle
Highscore in PHP
Highscore im Flash Game?
Neues Thema eröffnen   Neue Antwort erstellen
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.