应用多个条件SQL



我有一项作业遇到了麻烦,因为这是为了我的学习,如果你不直接给我答案,而是给我线索(我不想作弊),我将不胜感激。

我有三张桌子:电影、明星和演员。我想检索某个演员的电影(在本例中是卡梅伦·迪亚兹),但我只想展示她的最新电影。所以基本上有两个条件,一个是名字条件,另一个是发布年份条件。

我离完成它很近了,但我被困在了一个重要的部分。如果我单独应用这些条件,它们会起作用,但我需要把所有这些都放在一个声明中。这就是我到目前为止所拥有的。

SELECT M.Title, M.Yearreleased
FROM Movies M NATURAL JOIN Stars S NATURAL JOIN ActsIn A
WHERE Yearreleased = (SELECT MAX(Yearreleased) FROM Movies)

这将显示最近一年上映的电影。如果我将此语句的WHERE条件替换为:

WHERE S.Familyname = 'Diaz'

我会得到卡梅伦·迪亚兹出演的所有电影。

我尝试了以下我认为有效的代码组合:

SELECT M.Title, M.Yearreleased
FROM Movies M NATURAL JOIN Stars S NATURAL JOIN ActsIn A
WHERE Yearreleased = (SELECT MAX(Yearreleased) FROM Movies) AND S.Familyname = 'Diaz'

我的查询结果实际上是一个空表。

我想我所需要的,就是你们给我线索,告诉我如何将这两个条件结合到一个陈述中。谢谢!如果你需要样品数据或Fiddle ,请告诉我

更新

我想我可能已经解决了它,尽管我完全是偶然的,也许你可以向我解释为什么它有效?查询是:

SELECT M.Title, M.Yearreleased
FROM   Movies M 
       NATURAL JOIN Stars S 
       NATURAL JOIN ActsIn A 
WHERE  Yearreleased = (SELECT MAX(Yearreleased) 
                       FROM   Movies M 
                              NATURAL JOIN Stars S 
                              NATURAL JOIN ActsIn A 
                       WHERE  S.Familyname = 'Diaz')
AND S.Familyname = 'Diaz'

这是卡梅伦·迪亚兹发布的最新电影。

所以我将在这里解释,以下面的例子为例,第一次ur自然连接就像下面的

样本数据

Table A
A.Yearreleased | A.col2
A.data1        | A.data2
Table B
B.col 1     | B.Familyname 
B.data1     | B.data2

加入后

Table AB
A.Yearreleased | A.col2 | B.col 1     | B.Familyname 
A.data1        | A.data2| NULL        | NULL
NULL           | NULL   | B.data1     | B.data2

所以在这里,你试图在where条件下搜索A.data1和B.data2,但在你的表中,没有这样的记录,所以没有结果返回

第二次你执行带有条件的联接时(仍然不够合适,它仍然可以改进><),你的表如下

Table AB
A.Yearreleased | A.col2 | B.col 1     | B.Familyname 
A.data1        | A.data2| B.data1     | B.data2

通过第二次改进的查询,您可以获得ur数据=)

希望我的解释能帮助你理解你的错误,为

加油

相关内容

  • 没有找到相关文章

最新更新