Замена значений полей (база данных)

Требуется заменить значение id книги, на id автора этой книги.

Структура данных для запроса

Структура данных

В таблице RegistrationOfIssuance записывается кто когда взял или вернул книгу. В таблице BookInfo в целом информация о книге, а в Authors ФИО авторов. Нужно найти более популярного автора. Как составить SQL запрос?

Сделал по совету коментатора и вот что вышло

введите сюда описание изображения

Сам запрос:

SELECT RegistrationOfIssuance.Id, RegistrationOfIssuance.DateOperation, RegistrationOfIssuance.Operation, Count(BooksInfo.IdAuthor) AS [Count-IdAuthor]

FROM (Authors INNER JOIN BooksInfo ON Authors.Id = BooksInfo.IdAuthor) INNER JOIN RegistrationOfIssuance ON BooksInfo.Id = RegistrationOfIssuance.IdNumberBook

GROUP BY RegistrationOfIssuance.Id, RegistrationOfIssuance.DateOperation, RegistrationOfIssuance.Operation

ORDER BY Count(BooksInfo.IdAuthor) DESC;

Ответы (1 шт):

Автор решения: Sergey Semkin

Итог: Для нахождения автора, чьи книги больше берут нужно сделать запрос:

SELECT Authors.FIO, Count(Authors.FIO) AS CountOfFIO
FROM (Authors INNER JOIN BooksInfo ON Authors.ID = BooksInfo.IdAuthor) INNER JOIN RegistrationOfIssuance ON BooksInfo.ID = RegistrationOfIssuance.IdNumberBook
GROUP BY Authors.FIO;

В моём случае нужно найти за текущий год и в таблице RegistrationOfIssuance из-за того что берут и отдают книги, книга отмечается дважды, поэтому я взял только те варианты когда берут книгу.

SELECT Authors.FIO, Count(Authors.FIO) AS CountOfFIO
FROM (Authors INNER JOIN BooksInfo ON Authors.ID = BooksInfo.IdAuthor) INNER JOIN RegistrationOfIssuance ON BooksInfo.ID = RegistrationOfIssuance.IdNumberBook
WHERE (([RegistrationOfIssuance].[DateOperation]>=#1/1/2021#))
GROUP BY Authors.FIO, RegistrationOfIssuance.Operation
HAVING (((RegistrationOfIssuance.Operation) Like "Взял"))
ORDER BY Count(Authors.FIO) DESC;

Прикрепляю ссылку на форум, где помогли

→ Ссылка