Hallo Selfhtml-Forum,
da ich im Archiv und auch über Google nichts direkt gefunden habe was mein Problem betritt, erstelle ich mal einen neuen Beitrag.
Ich habe eine MySQL Datenbank, die die Bilanzen von Tischtennisspielen enthält. Die Tabelle "bilanzen" enthält für jeden für jeden Spieltag (repräsentiert über spielId) die Resultate der Spieler (repräsentiert durch SpielerId). Falls es ein Doppel war, enthält die Spalte "doppelpartnerId" die Id des Doppelpartners, sonst ist das Feld NULL.
Beispiel:
spielId | spielerId | doppelpartnerId | gewonnen | verloren
----------------------------------------------------------------
1 | 11 | NULL | 2 | 0
1 | 11 | 12 | 0 | 1
2 | 11 | 12 | 1 | 0
3 | 11 | 33 | 1 | 0
Mein Ziel ist es, daraus eine Tabelle mit den Doppelbilanzen zu erstellen, wobei jede Doppelpaarung nur einmal auftauchen soll und ihre Bilanzen addiert werden:
spielerId | doppelpartnerId | gewonnen | verloren
----------------------------------------------------
11 | 12 | 1 | 1
11 | 13 | 1 | 0
Das Problem ist, das eine einfache Gruppierung über spielerId bzw doppelpartnerId nicht ausreicht, weil die Doppelpaarungen ja immer noch unterschiedlich sein können. Ich bräuchte also eine Abfrage die zuerst nach spielerId gruppiert und danach nach doppelparnterId, und über den entstehenden resultaten dann die SUM() für gewonnen und verloren aufruft.
Also so in etwa (syntaktisch nicht korrekt):
SELECT spielerId, doppelpartnerId, SUM(gewonnen) AS gew, SUM(verloren) AS verl
FROM bilanzen
GROUP BY spielerId, GROUP BY doppelpartnerId
HAVING doppelpartnerId NOT NULL;
Ist so etwas überhaupt möglich oder muss ich da kompliziertere Umwege machen?
Schön wäre auch, wenn in der gleichen Abfrage statt der SpielerIds die Namen der Spieler ausgegeben würden (Verknüpfung bilanzen.spielerId/doppelpartnerId mit Tabelle spieler.name), aber das wäre ja auch noch anders lösbar (über zusätzliche Abfragen), wenn ich erstmal die Ids habe.
mfg Gregor