ich bin nun das erste Mal hier und habe schon ein wenig Grundlagen-Wissen in SQL und PHP. Zumindest hat es dafuer gereicht, fuer unseren Laufklub eine kleine/feine Datenbanktabelle aufzubauen, auf die man nun per Internet zugreifen kann. Wen es interessiert: www.aksljeme.com/?page_id=77, ist allerdings in kroatisch.
Nun weiss ich allerdings nicht weiter:
Ich moechte eine “Alltime-Rangliste” anzeigen, d.h. nur die jeweils persoenlichen Bestzeiten je Veranstaltung und Disziplin.
Nun zu mehr Details;
Die Datenbanktabelle_results_hat u.a. folgende Felder (jedenfalls sind das die wichtigen fuer mein Vorhaben):
·race
·race_year
·race_nr
·race_discipline
·race_info
·name
·surname
·time
Die Ergebnisse aus
moechte ich mit den jeweils kleinstentimeverknuepfen.
Beispiel: da laeuft einer 2x in Berlin den Marathon und nur der Datensatz mit seiner Bestzeit soll angezeigt werden. Ein andere laeuft 3x Berlin Marathon und 2x Halbmarathon in Wien (also soll er einmal mit seiner Berliner Bestzeit und einmal mit seiner Wiener Bestzeit angezeigt werden).
Ich habe im Moment keine Idee, wie ich hier DISTINCT und MIN verknuepfen muss/kann, damit das funktioniert. Vielleicht brauche ich ja auch noch andere Tricks (von denen ich aber noch nicht weiss, dass es sie gibt).
Aber ja, haargenau…
…danke erstmal fuer Deine prima Aufarbeitung in Tabellenform (werd’ das demnaechst auch so machen).
Nun hab’ ich damit mal etwas rumprobiert und komme mit dem DISTINCT ON nicht klar (weiss nicht wie ich eine PG-Erweiterung bei meinem Hoster installieren soll)
Na egal, hab’ mit deinem prima Ansatz der SQL-Query rumgespielt und bin dann auf folgende Loesung gestoßen, die scheinbar genau das macht, was ich will (muss ich morgen nochmals testen, wenn ich etwas mehr ausgeruht bin):
Statt
select
distinct on (name, disziplin) name, disziplin, zeit
from
race
order by
name, disziplin, zeit asc;
nehme ich nun (dank deiner prima Hilfe)
select
distinct (name, disziplin) name, disziplin, min(zeit)
from
race
group by
name, disziplin
order by
name, disziplin, zeit asc;
Danke vielmals, Andreas.
Ich meld mich nochmal, wenns klappt. Und wenn nicht, dann auch zweckes PG-Erweiterung (falls noetig)
meine SQL-Query klappt nicht…(es gibt doppelte eintraege)
…und das mit dem DISTINCT ON auch irgendwie nicht:
Fehlermeldung:
“You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'on (race_name, runner_surname), race_name, runner_surname, ’ at line 2”
Das klingt irgendwie, als ob das DISTINCT ON sich nicht sehr wohl fuehlt auf der Server-Umgebung.
Hier nochmal das “Andreas”-Query, das ich benutzt habe (ich habe lediglich ein Komma nach dem DISTINCT-ON-Klammer-Begriff eingefuegt
select
distinct on (race_name, runner_surname),
race_name,
runner_surname,
runner_race_time
FROM
results
ORDER BY
race_name,
runner_surname,
runner_race_time
Hmmm, nun muss ich irgendwie herausfinden, ob PGSQL tatsaechlich “mit drin ist”, oder? Andere Idee?
Aha, wusste ich nicht. Aus deinem Hinweis PG-Erweiterung (Andreas) habe ich unwissenderweise einfach das gemacht: PostGreSQL ist eine Erweiterung zu MySQL - war wohl nix - und… wieder was gelernt.
D.h. ja auch gleichzeitig, dass ich ein anderes Forum finden muss… sicher gibts doch unter Euch auch ein paar MySQL-Experten?