私はこの表を持っています:
_Movies (ID, Genre)
_
映画は複数のジャンルを持つことができるため、IDはジャンルに固有ではなく、多対多の関係です。ちょうど4つのジャンルの映画の総数を検索するクエリが必要です。私が持っている現在のクエリは
_ SELECT COUNT(*)
FROM Movies
GROUP BY ID
HAVING COUNT(Genre) = 4
_
ただし、これは合計ではなく4のリストを返します。 count(*)
のリストの代わりに総計を取得するにはどうすればよいですか?
1つの方法は、ネストされたクエリを使用することです。
SELECT count(*)
FROM (
SELECT COUNT(Genre) AS count
FROM movies
GROUP BY ID
HAVING (count = 4)
) AS x
内部クエリは正確に4つのジャンルを持つすべての映画を取得し、外部クエリは内部クエリが返した行数をカウントします。
SELECT COUNT(*)
FROM (SELECT COUNT(*)
FROM movies
GROUP BY id
HAVING COUNT(genre) = 4) t
多分
SELECT count(*) FROM (
SELECT COUNT(*) FROM Movies GROUP BY ID HAVING count(Genre) = 4
) AS the_count_total
これはすべての映画の合計ではありませんが、4つのジャンルを持っているのはどれだけですか。
だから多分あなたが欲しい
SELECT sum(
SELECT COUNT(*) FROM Movies GROUP BY ID having Count(Genre) = 4
) as the_sum_total
どうですか:
SELECT COUNT(*) FROM (SELECT ID FROM Movies GROUP BY ID HAVING COUNT(Genre)=4) a