首页 > 解决方案 > 最多一个查询 SQL

问题描述

我正在用基本的 SQL 做一些练习,但遇到以下问题:

让我们考虑以下关于演员和电影的关系模式:

让我们假设不止一个演员可能在一部电影中表演,并且同一演员可能在不止一部电影中表演,并且在给定的电影中,每个参与的演员只扮演一个角色。
电影制片人必须通过他/她的姓氏来明确识别,每部电影都由一位电影制片人执导。

我必须写的查询是:

最多在电影制片人昆汀·塔伦蒂诺执导的一部电影中一起表演的演员。

如何将“最多一部电影”翻译成 SQL 语言?

到目前为止我写的是:

SELECT DISTINCT A1.ActorCode, A2.ActorCode
FROM Actor A1 A2, Interpretation I1 I2
WHERE I1.Film=I2.Film and I1.Actor <> I2.Actor and A1.ActorCode= I1.Actor and A2.ActorCode=I2.ActorCode and exists unique (
    Select *
    From Film F
    Where I1.Film=F.FilmCode and F.Filmmaker=’Tarantino’
    )

但这不是重点

标签: sql

解决方案


SELECT
I.Actor, I2.Actor
FROM  Interpretation I 
INNER JOIN FIlm F
ON F.Filmmaker=’Tarantino’
and F.FilmCode = I.Film
INNER JOIN Interpretation I2
ON I.Film = I2.Film
and I2.Actor <> I.Actor
and I2.Actor not in (SELECT Actor 
                     FROM  Interpretation I3
                     INNER JOIN FIlm F1
                     ON F1.Filmmaker=’Tarantino’
                     and F1.FilmCode = I3.Film
                     and F1.FilmCode <> I.Film      #All other tarantino films
                     WHERE I3.Actor = I.Actor)

推荐阅读