sql - SQL - 在使用 AND 的选择中使用两个或多个条件
问题描述
根据两个条件,我无法获得我想要的数据,我有这个数据库:
Theatre(t_name, city, sinceYear);
Actor(a_id, a_name, birthYear, city);
Play(p_id, title, playwright, director, year);
Role(a_id, p_id, role, t_name);
Theatre:
Abima|tel aviv|1/1/1960
Miskan|beer sheba|20/2/1970
Akamri|haifa|15/3/1989
Actor:
204458952|Dani|22/1/1993|sderot
221354875|Osher|23/8/1995|beer sheba
251445841|Avi|5/12/1998|haifa
304226152|Noa|12/5/1992|tel avia
304804123|Shir|10/6/1990|beer sheba
Play:
111|Meri lo|Lior|Hanoh levin|2010
222|Tov agmad|Asaf|Nisim Aloni|2016
333|Songs|Ami|Hanoh levin|2018
444|Run it|Sami|Nisim Aloni|2010
Role:
304804123|111|meri|Abima
304226152|111|sonia|Abima
251445841|222|tov tov|Miskan
204458952|222|gamad |Abima
221354875|333|prince|Akamri
304804123|222|princes|Abima
我想接收所有出现在 Hanoh levin Play 而没有出现在 Nisim Aloni Play 中的演员(在目前的情况下,除了来自 shir.
我尝试这样做:
SELECT a_id, a_name FROM (
Select * FROM Actor JOIN Play, Role ON Actor.a_id=Role.a_id AND
Role.p_id=Play.p_id WHERE
director='Hanoh levin') AND NOT EXISTS (
Select * FROM Actor JOIN Play, Role ON Actor.a_id=Role.a_id AND
Role.p_id=Play.p_id WHERE
director='Nisim Aloni');
我得到一个错误,或者如果我稍微改变一下,我什么也得不到。根据数据库,我不应该接受女演员 Shir,因为她出现在两位导演的戏剧中。我做错了什么?
谢谢
解决方案
您可以将以下查询与连接一起使用:
select a_name
from Actor a
join Role r on r.a_id = a.a_id
join Play p on p.p_id = r.p_id
where exists ( select 1 from Play where director = 'Hanoh levin' and p_id = p.p_id )
and not exists ( select 1 from Play where director = 'Nisim Aloni' and p_id = p.p_id );
A_NAME
------
Shir
Noa
Osher
推荐阅读
- java - 在多个项目之间链接 maven 依赖项时出现 ClassNotFoundException
- airflow - 气流调度程序拒绝在恶魔模式下启动
- node.js - 在 mongodb 和节点 js 中堆内存不足
- javascript - Jquery检查未检查的转换不起作用
- java - 为什么 RecyclerView Adapter 是一个泛型类
- java - Vaadin 按钮单击不会立即执行
- python - 我非常坚持如何添加外卖选项,因为定义不起作用
- php - 从 java EE 通过 PHP 发送 HTML 数据而不使用 JSON 对象进行更改
- python - 如何使用 KV 语言在 Kivy 中制作自定义按钮?
- spring - 如何清理用于幂等 Spring 集成模式的元数据存储