У меня следующий запрос, в котором я пытаюсь получить общее количество голов и общее количество голосов за игрока за карьеру.
SELECT
p.PlayerID,
SUM(s.votes) AS Votes,
SUM(p.Goals) AS TotalGoals
FROM
PlayerDetails p
LEFT JOIN PlayerVotes s ON
p.PlayerID = s.PlayerID AND p.Season = s.Season
WHERE
p.PlayerID = $PlayerID
PlayerDetails table
PlayerID | Season | Round | Goals |
PlayerVotes table
PlayerID | Season | Votes |
Основным отличием данных в таблицах является то, что в таблице PlayerDetails содержатся данные об игроках за сезон в несколько рядов - например, Фред Смит играет в 10 игр, поэтому для каждой игры есть ряд, содержащий PlayerID, Season, Round и Goals забил гол. Таблица PlayerVotes имеет одну строку для каждого игрока за сезон с общим количеством голосов за этот сезон. Например, в 2017 году Фред Смит получил 10 голосов, поэтому будет один ряд данных PlayerID, Season и Votes.
Запрос возвращает сумму голов для игрока за всю карьеру, но сумма голосов не так близка к правильной.
Я пытался удалить AND "p.Season = s.Season" в соединении, но это удваивает цель и подсчитывает голоса.
Если я выполню этот базовый запрос в моей таблице PlayerVotes, результат будет ожидаемым
SELECT PlayerID, SUM(Votes)
FROM PlayerVotes
WHERE PlayerID = $PlayerID