Tach!
Ich nehme an, daß die Spielertabelle nur die ID, sowie Name enthält.
Die Spieletabelle würde die Spiele ID und die Spieler-ID enthalten.
Die 3. (fehlende) Tabelle enthält alle Spiele und besteht aus Spiel-ID und sonstigen Angaben zum Spiel.
So wäre das eine nützliche Struktur.
Definiere zunächst "alle Spiele".
Siehe Tabelle 3. Da sind alle Spiele aufgelistet.
Ich meine, wie stellst du fest, dass jemand an allen Spielen teilgenommen hat? Wie würdest du das im "normalen Leben" tun? Reicht es, zu zählen an wievielen Spielen ein Spieler teilgenommen hat und das mit der Anzahl der Spiele zu vergleichen oder musst du jeden Spieler zu den jeweiligen Spielen zuordnen und schauen, wo solch eine Zuordnung fehlt?
Wenn in der m:n-Tabelle ein Unique-Key (oder auch Primary-Key) über beide Spalten gelegt wird, ist sichergestellt, dass keine Dopplungen vorkommen können.
Würde ich in einem Produktivsystem machen.
Das musst du schon beim Entwickeln so machen, sonst siehst du ja eventuelle Fehler erst im Produtivbetrieb.
Dann wäre Gruppieren über den Spieler und Zählen der Spiele ein Weg zur Lösung. Dazu noch die Anzahl der Spiele zählen.
Geht es ein bißchen konkreter?
Du brauchst auf alle Fälle Wissen über Joins, falls du das noch nicht hast. Einen Join brauchst du, wenn zum Ergebnis noch Daten zu den Spielern oder Spielen hinzukommen sollen. Für das reine Zählen reicht die m:n-Tabelle, aber dann hast du nur die Spieler-IDs und eine Summe im Ergebnis.
SELECT spieler_id COUNT(*) FROM m_n_tabelle GROUP BY spieler_id
Wenn das Datum eine Rolle spielt, dann muss da jedoch noch die Spiele-Tabelle gejoint werden, um ungewünschte Spiele ausschließen zu können. Alternativen zu Joins können allerdings auch (correlated) Subquerys sein.
dedlfix.