我已经为这个问题设计了一个答案(我将在最后发布),但我只是想知道是否有一种“更简洁”的方式来构建查询。
问题如下:
菲利普·罗斯最新一本书的书名和出版年份是什么?您不能使用 ORDER BY 子句。编写一条 SQL 语句。使用子查询。不要假设您已经知道 Philip Roth 的 AuthorId、他最新一本书的 BookId 或最新一本书的发行年份。
数据库中的相关表:
Books (BookId, Title, YearPublished)
Authors (AuthorId, FirstName, LastName)
WrittenBy (AuthorId, BookId)
我的解决方案:
SELECT Title, YearPublished
FROM Books NATURAL JOIN Authors NATURAL JOIN WrittenBy
WHERE YearPublished = (SELECT MAX(YearPublished)
FROM Books NATURAL JOIN Authors NATURAL JOIN WrittenBy
WHERE AuthorId = (SELECT AuthorId
FROM Authors
WHERE FirstName = 'Philip'
AND LastName = 'Roth'))
AND FirstName = 'Philip'
AND LastName = 'Roth';
我想不出一种不再指定名字和姓氏的方法。否则,它只会列出与菲利普罗斯最新出版物同一年出版的所有书籍。
此查询完美运行。但是,有没有更简洁的方法来查询这个?
谢谢 :)
(至于我使用的是哪个 DBMS:这些是一些考试复习练习。我们必须使用由大学创建和提供的一个。它是非常基本的 SQL。比 Access 2010 更简单)