我希望通过课堂和课程为用户返回个人最佳状态。回合;但日期拍摄结果不正确。请帮助 - 太令人沮丧了!
SELECT
c.Class,
r.Round,
h.shootdate as 'Date Shot',
max(h.Score) AS 'Personal Best'
FROM history h, classes c, rounds r
WHERE c.id = h.classid AND r.id = h.roundid AND h.userid = 1
GROUP BY c.Class, r.Round
答案 0 :(得分:0)
你可以在history
表上使用自联接为每个classid和roundid选择一个每个用户得分最高的行
SELECT
c.Class,
r.Round,
h.shootdate as 'Date Shot',
h.Score AS 'Personal Best'
FROM history h
JOIN (
SELECT classid, roundid, max(score) score
FROM history
WHERE userid = 1
GROUP BY classid, roundid
) h1 ON h.classid = h1.classid AND h.roundid = h1.roundid AND h.score = h1.score
JOIN classes c ON c.id = h.classid
JOIN rounds r ON r.id = h.roundid
-- WHERE h.userid = 1 // not necessary
在您的查询中,您选择的shootdate
不存在于组中,这就是为什么您没有得到正确的值,其中得分最大,也使用显式连接语法来关联您的表