我有三张桌子
我想知道所有与特定演员观看过所有电影的女性顾客的名字。
我在编写SQL查询时遇到了麻烦。
有人可以帮帮我吗?
答案 0 :(得分:1)
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
。因此,让我们找到客户/电影组合的所有watches_movie记录
答案 1 :(得分:0)
此查询查找所有客户,确实没有他们没有看过的电影:
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
)
);
如果有大量数据,不会太快,但会做你想做的事。
顺便说一句,你知道你对电影表中存储的演员有一个规范化问题,对吗?