我有一个MS Access 2007数据库,其中包含以下表和属性:
时间表表示角色是否访问过一颗行星,一个行星可能有多个条目
我试图得到的问题是这一个:
对于每部电影,哪些角色访问过最多的行星?
这是我的尝试:
SELECT T.Movie, T.[Character's Name], Count(T.[Planet's Name]) AS planets
FROM TimeTable T
GROUP BY T.Movie, T.[Character's Name]
HAVING Count(T.[Planet's Name]) >= ALL (SELECT Count(T2.[Planet's Name])
FROM TimeTable T2 WHERE T.Movie = T2.Movie);
虽然它给了我一个空洞的结果。我的查询出了什么问题?
答案 0 :(得分:0)
您要求的行大于或等于所有行。下面的查询将返回匹配,即返回具有相同最高值的所有行。
SELECT t.movie,
t.character,
Count(t.planet) AS CountOfPlanet
FROM timetable t
GROUP BY t.movie, t.character
HAVING Count(t.planet) = (
SELECT Max(countofplanet)
FROM (
SELECT movie,
[character],
Count(planet) AS CountOfPlanet
FROM timetable
GROUP BY movie, [character]) q
WHERE q.movie = t.movie)
恐怕我无法应对你的字段名称。我可能忽略了这些空间,但撇号的距离太远了。