データベース システム試験 (明日) の勉強をしていますが、クエリを書くように求められる演習で問題があります。次に例を示します。
次の質問に答えるクエリを書くように求められています: 年齢が最も低い著者の中で、最も多くの本を書いたのは誰ですか?
問題は、先生が FROM 句内でサブクエリを使用すること、および TOP を使用することを禁止していることです。
私は答えを書きましたが、私が知っているものは間違っています:
SELECT W.AName, COUNT(W.ID_B) AS NBooks
FROM Write W, Author A1
WHERE (A1.AName = W.AName) AND
(A1.AAge = (SELECT MIN(A2.Age)
FROM Author A2))
GROUP BY W.AName
ORDER BY NBooks DESC
これは、年齢が低いすべての著者と、それぞれの書かれた本の数を示しています(願っています..)。正解は、この行の最初の行のみのはずです。
はっきりさせてください:
Table Author
AName | AAge
---------------
John | 25
Rick | 30
Sean | 26
Lena | 25
Table Writes
AName | ID_B
---------------
John | 2
Lena | 1
John | 3
Lena | 4
Rick | 5
Rick | 6
Lena | 6
Rick | 7
Rick | 8
(Sean は本を書いていないことに注意してください。本 nº6 には 2 人の著者がいて、Rick はほとんどの本の著者です (4) )。
今、私が上で書いたコードはこの結果を与えます(私は推測します):
AName | NBooks
-----------------
Lena | 3
John | 2
(最低年齢は 25 歳で、レナとジョンは両方とも 25 歳です)
質問される内容は次のとおりです。
AName | NBooks
-----------------
Lena | 3
(Lena は著者であり、すべての著者の中で最も年齢が低く (25)、ほとんどの本が書かれています)
前もって感謝します