【发布时间】:2020-10-30 20:06:06
【问题描述】:
我对如何正确执行 Microsoft Access 子查询感到很困惑。我有一个假设,我应该在其中创建一个,但我终其一生都无法弄清楚。问题来了:
第三季度。获取订购书籍的所有第二作者的姓氏和名字。在书名旁边印上这些名字。还显示这些标题中的每一个的总销售量。总销售量是订单行中的书籍数量乘以它们的价格,并为同一作者的所有订单相加。按销售总额的降序排列结果(提示:使用 SUM 函数将乘法相加,并使用 GROUP BY 对每个作者和标题进行这些加法)。
我已经弄清楚了这两个部分的 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;
我正在努力弄清楚如何将这些组合在一起以实现问题对我的要求。有什么提示可以帮助我理解如何做这样的事情吗?提前致谢。
【问题讨论】:
-
您的聚合查询不会给出正确的计算,因为没有 JOIN 子句。通过将一个 SQL 语句复制/粘贴到 SQLView 中的另一个 SQL 语句来构建嵌套查询。因此,构建一个连接查询/表的查询,然后复制/粘贴,最终得到类似
SELECT q1.*, q2.* FROM q1 INNER JOIN (SELECT …) AS q2 ON q1.ISBN=q2.ISBN ORDER BY TotalAmountSold DESC;的内容。尽可能使用 JOIN 子句而不是 WHERE 来链接表。什么是“第二”作者? -
如果 AuthorRank 字段 = 2,我相信他所说的第二作者的意思是在 Wrote 表上。他们将被归为该书的第二作者。