0

次のテーブルと属性を持つ MS Access 2007 データベースがあります。

  • 文字: 名前
  • 惑星: 名前
  • タイムテーブル:星の名前、キャラクターの名前

タイム テーブルは、キャラクターが惑星を訪れたかどうかを示します。1 つの惑星に複数のエントリがある場合があります。
私が取得しようとしているクエリは次のとおりです
。各映画について、どのキャラクターが最も多くの惑星を訪れましたか?

これは私の試みです:

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 に答える