Как создать подзапрос в Access - PullRequest
0 голосов
/ 10 июля 2020

Я так запутался в том, как правильно выполнить подзапрос Microsoft Access. У меня есть задание, в котором я должен его создать, но я не могу этого понять. Вот проблема:

Q3. Получите фамилии и имена всех вторых авторов, чьи книги были заказаны. Напечатайте эти имена рядом с названиями их книг. Покажите также общую сумму продаж каждого из этих наименований. Общая проданная сумма - это количество книг в строке заказов, умноженное на их цену и добавленное для всех заказов одного и того же автора. Отсортируйте результаты в порядке убывания общей проданной суммы (Подсказка: используйте функцию СУММ, чтобы сложить умножения, и ГРУППУ ПО, чтобы сделать эти добавления по авторам и заголовкам).

Я вычислил SQL для обеих частей (или я так думаю). Вот что у меня есть на данный момент:

Печатает заголовок, фамилию и имя:

SELECT Book.Title, Author.LastName, Author.FirstName<br>
FROM Wrote, Author, Book, OrderLine<br>
WHERE Wrote.AuthorRank = 2<br>
AND Wrote.AuthorId = Author.AuthorID<br>
AND Book.ISBN = Wrote.ISBN<br>
AND OrderLine.ISBN = Book.ISBN;

Для расчета общей проданной суммы:

SELECT SUM(Quantity * Price) AS TotalAmountSold<br>
FROM Book, OrderLine<br>
GROUP BY Title;

Я изо всех сил пытаюсь понять, как соединить их вместе, чтобы достичь того, о чем меня спрашивает. Есть какие-нибудь советы, которые помогут мне понять, как сделать что-то подобное? Заранее спасибо.

Author Table Book Table Customer Table Order Table OrderLine Table Part 1 OrderLine Table Part 2 Написал таблицу

1 Ответ

0 голосов
/ 10 июля 2020

Создать и сохранить запрос 1:

SELECT OrderLine.ISBN, Title, Sum([Quantity]*[Price]) AS TotalAmountSold
FROM OrderLine INNER JOIN Book ON OrderLine.ISBN = Book.ISBN
GROUP BY OrderLine.ISBN, Title;

Создать запрос 2:

SELECT Author.AuthorID, FirstName, LastName, Title, TotalAmountSold
FROM (Author INNER JOIN Wrote ON Author.AuthorID = Wrote.AuthorID) 
INNER JOIN Query1 ON Wrote.ISBN = Query1.ISBN
WHERE (((Wrote.AuthorRank)=2))
ORDER BY TotalAmountSold DESC;

Если вам нужен комплексный SQL, скопируйте / вставьте запрос 1 SQL в Query2, чтобы результат был таким:

SELECT Author.AuthorID, FirstName, LastName, Title, TotalAmountSold
FROM (Author INNER JOIN Wrote ON Author.AuthorID = Wrote.AuthorID) 
INNER JOIN 
     (SELECT OrderLine.ISBN, Title, Sum([Quantity]*[Price]) AS TotalAmountSold
      FROM OrderLine INNER JOIN Book ON OrderLine.ISBN = Book.ISBN
      GROUP BY OrderLine.ISBN, Title) AS Query1 
ON Wrote.ISBN = Query1.ISBN
WHERE (((Wrote.AuthorRank)=2))
ORDER BY TotalAmountSold DESC;

Сохранить Query2 и удалить Query1.

...