/ / SQL Left Join Fehler - Sport-App - MySQL, SQL

SQL Left Join Fehler - Sport-App - MySQL, SQL

Ich habe Probleme, eine Zählung zu meiner Frage beizutreten. Ich habe eine Tabelle, in der Zielereignisse gespeichert sind. Jede der Spalten "scorer" "assist1" und "assist2" enthält die Spieler-IDs. Ich versuche herauszufinden, wie oft eine Spieler-ID im Torschützen erscheint, assist1 oder assist2, aber NUR, WENN DER TYP IST pp

goalEvents

gid scorer assist1 assist2 type
1    1       2       3     eve
1    1       2      NULL   pp
1    1       2       3     sh

ABFRAGE

SELECT
p.playerid, p.playernum,
CONCAT_WS(". ", SUBSTR(p.playerfname, 1, 1), p.playerlname) name,
COALESCE(pp.powerplay, 0) PPP
FROM players p
LEFT JOIN (
SELECT COUNT(*) AS powerplay FROM goalEvents WHERE scorer = p.playerid OR assist1 = p.playerid OR assist2 = p.playerid AND type="pp"
) pp
WHERE p.playerteam = 1

Was ich als Endergebnis will

id   name  PPP
1 P. Name  1
2 A. Name  1
3 S. Name  0

Antworten:

2 für die Antwort № 1

Entfernen Sie die LEFT JOIN-Klausel und fügen Sie ein SUB SELECT in Ihre zurückgegebenen Spalten ein. Beachten Sie auch die Klammern, um die OR "s vom AND zu trennen. Versuchen Sie Folgendes (nicht getestet):

SELECT
playerid,
playernum,
CONCAT_WS(". ", SUBSTR(playerfname, 1, 1), playerlname) name,
(SELECT COUNT(*) AS powerplay FROM goalEvents
WHERE (scorer = playerid OR assist1 = playerid OR assist2 = playerid)
AND type="pp") AS PPP
FROM players
WHERE playerteam = 1