2017-12-01 14 views
-1

(タイトル、プロデューサー、ジャンル)を持つ映画のテーブルを作成しています。少なくとも1つのアクション映画と1つのスリラーを制作したプロデューサーを返さなければなりません。 どうすればいいですか?2つの異なる値を尊重する列を返す方法は?

これは私が試したコードですが、それは2つ以上の映画を生産し、すべての生産者を返す:あなたの選択はあなたがフェッチしようと何から始めるべき

SELECT M.Producer 
FROM Movies M 
GROUP BY M.Producer, M.Genre 
HAVING count(M.Genre = 'Action' and M.Genre = 'Thriller') >= 2; 

答えて

1

を - プロデューサーのデータを。行くための一つの方法:あなたは1の最小カウントをしたいので、1以上が2 <= (SELECT COUNT(...) ...) can be usedのようなものを必要な場合

SELECT P1.ProducerName --, other fields here 
FROM Producers P 
WHERE EXISTS (SELECT 1 FROM Movies M1 WHERE M1.Producer = P.Producer AND M1.Genre = 'Action') 
    AND EXISTS (SELECT 1 FROM Movies M2 WHERE M2.Producer = P.Producer AND M2.Genre = 'Thriller') 

EXISTSはこの場合に使用することができます。

1
SELECT M.Producer 
FROM Movies M 
GROUP BY M.Producer 
HAVING SUM(IF(M.Genre = 'Action', 1, 0)) > 0 
    and SUM(IF(M.Genre = 'Thriller', 1, 0)) > 0; 
関連する問題