MySQL 5.1
Ich habe folgendes Problem mit meiner MySQL Abfrage in PHP:
Aus meiner Tabelle "Performances" (Wettkampfresultate) möchte ich die 10 schnellsten
anzeigen. Per JOIN hole ich aus der Teilnehmertabelle die Namen der Teilnehmer. Da die Wettkampfresultate aus mehreren Jahren sind, möchte ich pro Teilnehmer aber nur seine beste Zeit anzeigen (Bestenliste).
Nun sollte man meinen, dass dies mit GROUP BY ohne weiteres möglich ist. Naja, aber aus irgend einem Grund geht es eben doch nicht. Ohne GROUP BY funktioniert meine Abfrage hervorragend, jedoch sind halt Teilnehmer (Athletes) doppelt genannt.
Hier der Code:
Die Abfrage mit GROUP BY ergibt ein sehr eigenartiges Ergebnis: Fast willkürlich werden die Teilnehmer angezeigt.
Mir fällt nichts mehr ein, nachdem ich alle Kombinationen von JOINs und Unterabfragen probiert habe.
Ich habe folgendes Problem mit meiner MySQL Abfrage in PHP:
Aus meiner Tabelle "Performances" (Wettkampfresultate) möchte ich die 10 schnellsten
anzeigen. Per JOIN hole ich aus der Teilnehmertabelle die Namen der Teilnehmer. Da die Wettkampfresultate aus mehreren Jahren sind, möchte ich pro Teilnehmer aber nur seine beste Zeit anzeigen (Bestenliste).
Nun sollte man meinen, dass dies mit GROUP BY ohne weiteres möglich ist. Naja, aber aus irgend einem Grund geht es eben doch nicht. Ohne GROUP BY funktioniert meine Abfrage hervorragend, jedoch sind halt Teilnehmer (Athletes) doppelt genannt.
Hier der Code:
PHP:
SELECT
athletes.AthleteID,
RIGHT(performances_lc.PerfTime,8) AS Time,
performances_lc.Meet,
performances_lc.TimeType,
athletes.GivenName,
athletes.Surname,
LEFT(athletes.Birthdate,4) AS DoB,
athletes.Club,
athletes.CountryCode
FROM
athletes
LEFT JOIN
performances_lc
ON
performances_lc.AthleteID = athletes.AthleteID
WHERE
performances_lc.EventID = '59'
GROUP BY
athletes.GivenName
ORDER BY
performances_lc.PerfTime,
performances_lc.TimeType
Die Abfrage mit GROUP BY ergibt ein sehr eigenartiges Ergebnis: Fast willkürlich werden die Teilnehmer angezeigt.
Mir fällt nichts mehr ein, nachdem ich alle Kombinationen von JOINs und Unterabfragen probiert habe.