当没有打印任何东西时如何使这个查询工作?

How to make this query work when nothing is not being printed?

我有 3 个数据库文件,给定图像包含其架构 我想获取所有参与电影制作的演员姓名 "Sholay"

我尝试了以下查询

SELECT NAME
FROM Person
WHERE Person.PID IN (SELECT PID 
                     FROM M_Cast
                     WHERE MID IN(SELECT MID FROM Movie WHERE TITLE="Sholay"))

但是输出屏幕上什么也没有显示,我找不到其他方法来解决这个问题。

请确认您得到的结果是这样的

SELECT PID 
FROM M_Cast
WHERE MID IN(SELECT MID FROM Movie WHERE TITLE="Sholay")

您要查找的 PID 为:

SELECT NAME
FROM Person
WHERE Person.PID IN

换句话说:转到 table Persons 并查看 PID 列并检查是否存在与来自 table M_Cast 的 PID 列相同的值查询 returns.

您说您的 2 个内部查询工作正常并且 return 正在获取一些值。伟大的。但是假设这个数字是 555、556、557,table Person 中 PID 列中的值是 001、002、003、004、005、006。

此外,如果 table 人中的 PID 是“01”(类型 varchar),而 table M_Cast 中的 PID 是“1”(类型 varchar),那么您的查询将不会 return 您可以在这个小演示中看到的任何结果: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"))