私は3つのテーブルを持っています
- 映画(mov_id(key)、name、actor、...)
- 顧客(cust_id(key)、name、gender、....)
- watchs_movie(cust_id mov_id、movie_price、...)
特定の俳優と一緒にすべての映画を見たすべての女性客の名前を知りたいです。
このためのSQLクエリを作成するのに問題があります。
誰かが私を助けることができますか?
私は3つのテーブルを持っています
特定の俳優と一緒にすべての映画を見たすべての女性客の名前を知りたいです。
このためのSQLクエリを作成するのに問題があります。
誰かが私を助けることができますか?
select c.cust_id, c.name, c.gender
from customer c
join movies m on m.actor = 'Actor'
left join watches_movie w on w.cust_id=c.cust_id and m.mov_id=w.mov_id
where c.gender = 'Female'
group by c.cust_id, c.name, c.gender
having count(distinct m.mov_id) = count(distinct w.mov_id)
壊す:
2. ALL the movies with a particular actor
。それでは、customer/movie の組み合わせについて、watches_movie レコードをすべて見つけてみましょう。
このクエリは、視聴していない映画が存在しないことが真実であるすべての顧客を検索します。
SELECT * FROM customer WHERE gender = 'F' AND NOT EXISTS
(
SELECT * FROM movies WHERE actor = 'Particular Actor' AND mov_id NOT IN
(
SELECT mov_id FROM watches_movie WHERE cust_id = customer.cust_id
)
);
大量のデータがある場合は速すぎませんが、必要なことは実行できます。
ところで、ムービー テーブルに保存されているアクターに正規化の問題があることはご存知ですよね?