【发布时间】:2014-06-27 23:24:49
【问题描述】:
我有以下表格:
电影
MOVIE_ID 标题 ---------- ----------------- 1 肖申克的救赎 2 教父 3 教父:第二部分 4 黑暗骑士 5 低俗小说 6 好,坏,丑 7 辛德勒的名单 8 愤怒的男人 9 搏击俱乐部 10 开始 11 阿甘正传董事
DIRECTOR_ID 名称 ------------ ------------- 1 蒂姆·罗宾斯 2 摩根弗里曼 3 马龙白兰度 4 阿尔帕基诺 5 罗伯特·德尼罗 6 克里斯蒂安·贝尔 7 希斯莱杰 8 约翰·特拉沃拉 9 乌玛·瑟曼 10 克林特·伊斯特伍德 11 伊莱·瓦拉赫直接
MOVIE_ID DIRECTOR_ID ---------- ------------ 1 1 1 2 2 3 2 4 3 4 3 5 4 6 4 7 5 8 5 9 6 10我想要一个返回所有以 x、y 和 z 作为导演的电影的查询:
例子:
如果我要找一部有 Al Pachino 和 Clint Eastwood 的电影,它 应该返回 nothing 因为我没有一部同时具有这两者的电影 他们是导演。
但是,如果我要找一部与 Tim Robbins 和 Morgan 合作的电影 弗里曼,它应该返回肖申克的救赎
如果使用上述设计无法完成,请提出替代方案。
我已经尝试过了,但我的查询会返回结果:(
SELECT m.title FROM Movie m
WHERE m.movie_id IN (
SELECT d.movie_id FROM Direct d
WHERE d.director_id IN (
SELECT director_id FROM Director dir
WHERE name IN('Clint Eastwood', 'Al Pachino')));
【问题讨论】:
标签: mysql sql oracle sqlite relational-division