Вложенные запросы в Python SQL приводят к пустому фрейму данных - PullRequest
0 голосов
/ 09 февраля 2020

Я пытаюсь сделать один вопрос о назначении на SQL. У меня вопрос:

Перечислите всех актеров, которые снимались в фильме до 1970 года и в фильме после 1990 года.

Это схема БД.

enter image description here

Мой запрос выглядит так:

df1= pd.read_sql_query("SELECT DISTINCT(NAME) FROM PERSON WHERE PID IN(SELECT PID FROM M_CAST WHERE MID IN (SELECT MID FROM MOVIE WHERE YEAR>1970 OR YEAR<1990));",conn)

В результате получается пустой набор данных.

Я даже пытался с Joins, но безуспешно. Мой запрос с использованием соединения выглядит следующим образом.

Select p.name from Person P join M_Cast MC on MC.PID=P.PID where MC.MID IN(Select MID from movie where year<1970 or year>1990)

Оба запроса выполняются без ошибок, но не дают результатов. Я думал, что все ясно с SQL Но не уверен, где я здесь не прав. Может ли кто-нибудь помочь, пожалуйста? Я хочу знать, что именно я делаю не так

Заранее спасибо

1 Ответ

0 голосов
/ 10 февраля 2020
select 
Name 
from
Person
where PID in (
--this select finds persons fitting the criteria
select 
MC.PID 
from 
Movie M   join 
M_Cast MC on M.MID = MC.MID
where 
[year] > 1990  --year is a reserved word in most SQL languages and must be in []
intersect --intersect finds all that match both criteria
select 
pid 
from 
Movie M   join 
M_Cast MC on M.MID = MC.MID
where 
[year] < 1970) --year is a reserved word in most SQL languages and must be in []
...