0

我有一个带有以下表格和属性的 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);

它给了我一个空的结果。我的查询有什么问题?

4

1 回答 1

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) 

恐怕我无法应付您的字段名称。我可能忽略了这些空间,但撇号太过分了。

于 2012-10-30T11:04:38.133 回答