dedlfix: Query gesucht

Beitrag lesen

Tach!

Aber warum tuts dann das hier nicht?

SELECT Name FROM spieler
WHERE SID =
( (SELECT COUNT(*) FROM m_n_tabelle) = (SELECT COUNT(*) AS Anzahl FROM spiele GROUP BY SID ORDER BY Anzahl DESC LIMIT 1) )

Die linke Subquery liefert eine Zahl, die Anzahl der Einträge in der m:n-Tabelle, also eigentlich alle vorhandenen Spieler-Spiel-Zuordnungen. Dieser Wert wäre jedoch nicht nützlich für die Lösung deines Problems. Angenommen du hast da stattdessen die Spiele-Tabelle, dann würde das einen Sinn ergeben, hilft dir aber auch nicht weiter, wie ich gleich noch erläutern werde. Die rechte Subquery sollte eigentlich auf die m:n-Tabelle laufen. Du hast da wohl die Bezeichnungen verdreht. Aber auch die richtige Benennung bringt dich nicht voran. Das Ergebnis ist jedenfalls die Anzahl der Spiele des Spielers, der am meisten an allen Spielen teilgenommen hat. Wenn er keins ausgelassen hat, ist das Ergebnis gleich der linken Query, ansonsten ist es ungleich. Bis jetzt hast du ein boolesches Ergebnis vorliegen, weil du etwas miteinander verglichen hast. In MySQL wird das zu 1 oder 0. Und nun vergleichst du die SID damit. Du bekommst also den Namen des Spielers mit der ID 1 (so vorhanden), wenn mindestens einer der Spieler an allen Spielen teilgenommen hat, ansonsten eine leere Menge.

dedlfix.