Hallo zusammen,
Ich versuche gerade die Daten für eine Bestenliste aus einer Datenbank (MySql4.0.24) zu holen, dabei gibt es zwei relevante Tabellen, zum einen die Tabelle "mitglieder" mit den Spalten id, vorname, nachname, mw* und gebdatum und zum anderen die Tabelle "zeiten" mit den Spalten mitgliedid, datum (DATE), zeit (TIME), hundertstel (tinyint(4))**, disziplin und streckenlaenge (die unwichtigen Spalten habe ich mal weggelassen).
* speichert ob das Mitglied männlich oder weiblich ist
** da ich ja keine Hundertstel Sekunden in einer Spalte im TIME-Format speichern kann, eben eine extra Spalte
Jetzt möchte ich jeweils für die 10 besten Zeiten zu einer Disziplin, einer Streckenlänge und einem Geschlecht - und natürlich darf nur jedes Mitglied nur einmal in der Liste auftauchen, auch wenn es mehrere Zeiten unter den Besten 10 hat.
Versucht habe ich das mit den Query:
SELECT
m.nachname as name,
m.vorname,
DATE_FORMAT(m.gebdatum,'%Y') as jg,
CONCAT(TIME_FORMAT(z.zeit,'%i:%s'),',',LPAD(z.hundertstel,2,'0')) as zeit,
DATE_FORMAT(z.datum,'%d.%m.%Y') as datum
FROM
mitglieder as m,
zeiten as z
WHERE
m.id=z.mitgliedid AND
m.mw = 'm' AND
z.disziplin = 4 AND
z.streckenlaenge = 100
ORDER BY
z.zeit,
z.hundertstel,
z.datum DESC
LIMIT 10
Die Zeiten die ich damit bekomme stimmen auch - nur leider werden Mitglieder mehrfach ausgegeben. Wenn ich vor ORDER BY noch ein GROUP BY m.id
setze, bekomme ich zwar jedes Mitglied nur einmal, aber leider die falschen Zeiten.
Hat vielleicht jemand einen Schubser in die richtige Richtung, wie ich das Problem (am besten mit nur einem Query) lösen kann?
Grüße aus Nürnberg
Tobias