Замена значений полей (база данных)
Требуется заменить значение 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;
Прикрепляю ссылку на форум, где помогли

