Vinzenz Mai: mysql - COUNT() gibt kein 0 aus

Beitrag lesen

Hallo

SELECT COUNT(g.winner)+1 AS wins, p.id AS playerid FROM players p
LEFT JOIN games g ON p.id = g.winner GROUP BY playerid

Funktioniert nicht...

natürlich nicht. Was soll die Addition von 1 bewirken?
Wie wäre es, wenn Du als allererstes die Liste der Spieler mit der Liste der Gewinner verknüpfst - ohne irgendwelche Zählaktionen, dazu nutzt Du einen INNER JOIN (schöner wäre ein expliziter JOIN statt implizit über eine WHERE-Klausel). Mehr dazu in Rouvens bereits verlinktem Artikel

Im zweiten Schritt änderst Du die Verknüpfung derart ab, dass auch alle die Spieler mit aufgeführt werden, die noch nicht gewonnen haben. Dazu verwendest Du statt des INNER JOIN einen OUTER JOIN, je nach Gusto einen LEFT oder einen RIGHT JOIN.

Wenn Du das hast, kannst Du im letzten Schritt zählen, wie oft der einzelne gewonnen hat.

Wo bist Du hängengeblieben?

Freundliche Grüße

Vinzenz