Не могли бы вы подтвердить, что в результате вы получите это
SELECT PID
FROM M_Cast
WHERE MID IN(SELECT MID FROM Movie WHERE TITLE="Sholay")
Есть PID, который вы ищете с этим:
SELECT NAME
FROM Person
WHERE Person.PID IN
Другими словами: go к таблице Persons и посмотрите на PID столбца и проверьте, есть ли те же значения, что и в PID столбца из таблицы M_Cast, которые возвращает ваш внутренний запрос.
Вы говорите, что ваши 2 внутренних запроса работают нормально и возвращают некоторые значения. Отлично. Но допустим, что эти числа равны 555, 556, 557, а значения в столбце PID в таблице Person равны 001, 002, 003, 004, 005, 006.
Также, если PID в персонах таблицы равен ' 01 '(введите varchar) и в таблице M_Cast равен' 1 '(введите varchar), тогда ваш запрос не вернет никаких результатов, как вы можете видеть в этой небольшой демонстрационной версии: https://dbfiddle.uk/?rdbms=oracle_18&fiddle=07e0c38f1dee01f460d5d00e3902bb93
В конце попробуйте это:
SELECT NAME
FROM Person
WHERE trim(Person.PID) IN (SELECT trim(PID )
FROM M_Cast
WHERE MID IN(SELECT MID FROM Movie WHERE TITLE="Sholay"))