Я изучаю свой экзамен по базам данных (завтра), и у меня возникают проблемы с упражнениями, когда меня просят написать запросы. Вот пример:
Меня просят написать запрос, чтобы ответить на следующий вопрос: Среди авторов с самым низким возрастом, у кого написано большинство книг?
Проблема мой учитель запрещает мне использовать подзапросы внутри предложения 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
(заметьте, что Шон не написал ни одной книги, книга №6 имеет 2 автора, а Рик - автор большинства книг (4))
Теперь код, который я написал выше, дает этот результат (я думаю):
AName | NBooks
-----------------
Lena | 3
John | 2
(Самый низкий возраст - 25, а Лена и Иоанн - 25)
Спрашивается:
AName | NBooks
-----------------
Lena | 3
(Лена - автор, среди всех авторов с самым низким возрастом (25), причем большинство книг написано)
Заранее спасибо