首页 > 解决方案 > 列出自某一年以来没有导演过电影的所有导演的姓名

问题描述

我正在尝试使用 imdb 数据库学习 PostgreSQL,但我似乎无法弄清楚如何列出自特定年份以来没有导演过电影的导演。

我有三张桌子可以使用

  1. 带有 mov_id、mov_title、mov_year 的电影表
  2. 具有 dir_id、dir_name 的表导向器
  3. 带有 dir_id 和 movie_id 的表 movie_direction

我尝试了下面的代码来列出自 1988 年以来没有导演过电影的所有导演,但这是行不通的。有人可以指导我如何实现这一目标的正确方向吗?

from movie_direction
join director d using (dir_id)
join movie m using (mov_id)
where m.mov_year < 1988

标签: sqlpostgresql

解决方案


使用聚合:

select d.dir_name
from movie_direction md join
     director d
     using (dir_id) join
     movie m
     using (mov_id)
group by dir_id, d.dir_name
having max(m.mov_year) < 1988;

请注意,这按 聚合dir_id,以防两个董事具有相同的姓名。


推荐阅读