Я следующую структуру на моих таблицах MySQL:подсчета MySQL строк на нескольких сгруппированных столбцов
-------------------------------------------
Goal
-------------------------------------------
GoalID | GameID | ScorerID | AssistID
-------------------------------------------
1 1 1 2
2 1 2 3
3 1 2 null
4 1 3 2
5 2 1 3
6 2 1 null
----------------------
Player
----------------------
PlayerID | LastName
----------------------
1 AB
2 CD
3 EF
теперь, что я хочу, чтобы достичь является следующее:
-------------------------------------------
GameID | Player | Goals | Assists
-------------------------------------------
1 AB 1 0
1 CD 2 2
1 EF 1 1
2 AB 2 0
2 EF 0 1
Это то, что у меня есть пытался, но это дает мне неправильные результаты:
SELECT Goal.GoalID,
Goal.GameID,
COUNT(Scorer.PlayerID) AS Goals,
COUNT(Assist.PlayerID) AS Assists,
Player.LastName AS Player
FROM Goal
LEFT JOIN Player Player
ON Player.PlayerID = Goal.ScorerID
OR Player.PlayerID = Goal.AssistID
LEFT JOIN Player Scorer
ON Scorer.PlayerID = Goal.ScorerID
LEFT JOIN Player Assist
ON Assist.PlayerID = Goal.AssistID
GROUP BY Player,
Goal.GameID
ORDER BY Goal.GameID,
Goal.GoalID
Я довольно уверен, что есть простой способ, чтобы получить результат, но я просто не могу обними мою голову.
@StuartLC спасибо, я не знаю, что! К счастью, у ОП было только восемь строк, поэтому я надеюсь, что смогу набрать их вовремя, чтобы получить ответ:) – AdamMc331
Выглядит хорошо ... что вы подразумеваете под «предполагает, что у игрока есть хотя бы одна цель или хотя бы одна помощь « – micadelli
Если у вас есть игрок в таблице игроков, который вообще не отображается в таблице целей, они не будут возвращены моим запросом. Для этого вы можете просто изменить его из JOIN в RIGHT JOIN. – AdamMc331