0

コレクションを整理するための映画 DB がありますが、それを使用して mySQL をさらに学習しています。開発に沿って、バンプ(たくさん)を見つけましたが、今のところ私の問題は次のとおりです。

ACTORS:

  • id_actor
  • 名前
  • セックス

MOVIEACTORES:

  • id_movieactors
  • id_movie
  • id_actor

ほとんどの映画に出演した俳優のトップ 5 (トップ 10、トップ 20 など) を数えてから、ほとんどの映画に出演した女優のトップ 5 を数えたいと思います。

私はこれを持っています:

  SELECT filmesactores.id_actor, 
         COUNT( * ) AS contagem
    FROM filmesactores
GROUP BY id_actor
ORDER BY contagem DESC 
   LIMIT 10 

しかし、このコードは俳優と女優を区別しません。解決策は簡単かもしれませんが、私の知識では今のところ手が届きません。誰?

4

1 に答える 1

1

グループ化するsex, nameと性別ごとに俳優の数が分けられますが、各性別グループ (つまり、上位 5 人の俳優と上位 5 人の女優) に制限を適用するため、2 つのクエリを実行し、それらの結果を一緒に UNION します。

SELECT name, COUNT(*) AS moviecount
FROM actors
JOIN movieactores ON actors.id_actor = movieactores.id_actor
WHERE sex = 'Male'
GROUP BY name
ORDER BY COUNT(id_movie) DESC
LIMIT 5

UNION

SELECT name, COUNT(*)
FROM actors
JOIN movieactores ON actors.id_actor = movieactores.id_actor
WHERE sex = 'Female'
GROUP BY name
ORDER BY COUNT(id_movie) DESC
LIMIT 5
于 2011-06-27T23:28:03.240 に答える