Hi
ähm, was ist dein Problem? Du möchtest alle zusammenfassen, bei denen spielerId und doppelpartnerId übereinstimmen. Tu das, streich einfach aus deinem Syntaxvorschlag das zweite GROUP BY
GROUP BY spielerId, doppelpartnerIdOder übersehe ich jetzt was?
ARG :-) Nene das geht schon so, nur das war die eine Variante die ich noch nicht ausprobiert hatte.
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.
Das ist sicherlich eine spannende Frage. Ich - als Freund von Subselects - würde die gesamte obige Abfrage in ein Subselect packen und einen Join in die Namenstabelle auf Basis der IDs anschließen. Ob das DBMS das mitmacht hängt davon ab was du im Einsatz hast.
Alternativ könntest du den Join auch schon in der Abfrage mit einfließen lassen und anschließend nach ID+Name gruppieren.
Habs mit Sub-Selects gelöst, klappt sogar:
SELECT
(SELECT name FROM spieler WHERE id = spielerId) AS spieler1,
(SELECT name FROM spieler WHERE id = doppelpartnerId) AS spieler2, SUM( gewonnen ) AS gew, SUM( verloren ) AS verl
FROM bilanzen
GROUP BY spielerId, doppelpartnerId
HAVING doppelpartnerId IS NOT NULL
Vielen Dank für die schnelle Hilfe
mfg Gregor