MySQL запрос, но две разные группы по - PullRequest
1 голос
/ 07 сентября 2011

Если мои данные

Name - playerID - matchID - Innings - Runs
James   1   1   1   5
James   1   1   2   8
Darren  2   1   1   3
Darren  2   1   2   9
James   1   2   1   10
James   1   2   2   12
Darren  2   2   1   13
Darren  2   2   2   19

и мои данные sql

$query = "SELECT playerID, name,
        SUM(runs) AS runs_scored,
        MAX(runs) AS highest_score
    FROM matchPlayer GROUP BY playerID";

Тогда результат будет выглядеть как

James has scored 35 runs with a highest score of 18
Darren has scored 44 runs with a highest score of 19

Теперь я хочу получить наибольшее количество очков в одном матче (то есть объединение подач 1 и 2)? Я не знаю, как начать этот запрос: (

EDIT Точная информация, которую я запрашиваю, - это наивысшее общее количество совпадений, поэтому у Джеймса 13 комбинированных прогонов из matchID 1 и 22 комбинированных прогона из matchID 2 - поэтому ответ, который я получаю, равен 22.

1 Ответ

3 голосов
/ 07 сентября 2011

Вам нужно сделать это в два этапа:

SELECT ms.playerID, mp.name, SUM(ms.runs_by_match) AS runs_scored,
    MAX(ms.runs_by_match) as highest_score
FROM
    matchPlayer as mp
    INNER JOIN (
        SELECT playerID, matchID, SUM(runs) AS runs_by_match
        FROM matchPlayer
        GROUP BY playerID, matchID
    ) AS ms ON mp.playerID = ms.playerID
GROUP BY
    ms.playerID, mp.name
...