私はこの問題に対する答えを考案しました (最後に投稿します) が、クエリを構造化するための「よりクリーンな」方法があるかどうか疑問に思っています。
質問は次のとおりです。
最新のフィリップ・ロスの本のタイトルと出版年は? 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';
姓と名を再度指定しない方法がわかりません。それ以外の場合は、Philip Roth の最新の出版物と同じ年に出版されたすべての本をリストするだけです。
このクエリは完全に機能します。しかし、これを照会するよりクリーンな方法はありますか?
ありがとう :)
(私が使用している DBMS について: これらは試験の復習演習です。大学が作成および提供したものを使用する必要があります。これは非常に基本的な SQL です。Access 2010 よりも簡単です)