dedlfix: MySQL: SUM der jeweils besten 3

Beitrag lesen

Tach!

vielen Dank für Deine Antwort. Dann lag ich mit meinem Problem ja gar nicht so falsch, dass das ziemlich "tricky" ist.

Idee: Das ist das "Endergebnis" (Summe): SELECT SUM(einzelergebnis) AS gesamtergebnis FROM table GROUP BY sportler_id ORDER BY gesamtergebnis DESC

Nun ist ja der Inhalt der "table" eigentlich eine Teilmenge, sprich ein Subselect. "Hole alle Daten aus der table a, wobei nur diejenigen ergebnis-Datensätze genommen werden sollen, welche die gleiche Sportler_id haben, sortiert nach einzelergebnise und nur die ersten 3: SELECT * FROM table a WHERE ergebnis_id=(SELECT b.einzelergebnis_id FROM table b WHERE b.sportler_id=a.sportler_id ORDER BY b.einzeleregbnise DESC LIMIT 0,3)

Wohl eher nicht. Du erzeugst damit zu jeder Zeile der Tabelle - also zu jedem Ergebnis - eins bis drei weitere Ergebniszeilen. Du möchtest aber nur zu jedem Sportler drei haben, soweit ich das verstanden habe.

Oder wäre sogar ein JOIN richtiger, mit dem ich jeweils die 3 ersten Datensätze an den "ersten Datensatz" anhänge und dann via GROUP die richtige Summe ziehen kann?

Ist sowas denkbar?

Das schöne an Subquerys ist, dass man mit relativ wenig Aufwand Hauptquery und Subquery trennen und unabhängig voneinander laufen lassen kann. Man kann damit recht unkompliziert die einzelnen Ergebnismengen zwecks Überprüfung ermitteln lassen. Bei Joins ist das nicht so einfach, weil sie keine abgeschlossene syntaktische Einheit bilden. Du kannst also mit den Subquerys recht gut prüfen, ob deine Ideen zielführend sind.

dedlfix.