【发布时间】:2013-04-27 13:35:01
【问题描述】:
我正在准备几周后的考试,遇到了一个我仍然无法弄清楚的 SQL 查询问题。我想知道是否有人可以给我建议。
关系数据库:
Books(**ISBN**, Title, Genre, Price, Publisher, PublicationYear)
Author(**AuthorNum**, Name)
Write(**ISBN**, AuthorNum)
问题:找出每个出版商最贵的书,连同作者姓名,按书名字母顺序排列。
我尝试了很多方法,我认为这是最接近解决方案的一种,但它不正确:
SELECT Title, Name
FROM Author AS a, Books AS b, Write AS w
WHERE a.AuthorNum = w.AuthorNum AND b.ISBN = w.ISBN
GROUP BY Publisher
HAVING MAX(Price)
ORDER BY Title
【问题讨论】:
-
您使用的是哪种 SQL 变体? (或者这个类是否仅限于标准 - 如果是,是哪一个?)
-
出现平局时应该如何处理:当出版商的两本(或更多)书的最高价格相同时?
-
该问题是过去的纸质考试问题,它没有指定在这种情况下该怎么做,但很好的评论。我想这个价格的书都应该退了吗?
-
整个想法是您可以以这样一种方式构建您的查询,它可以被采用来支持这两个选项。如果您的 DBMS 支持,最干净/最简单的方法是使用分析函数(row_number() 与 rank())。 stackoverflow.com/q/16119906/905902
-
@ConnorMcGuile "..连同作者的名字.." 这里的问题是没有任何迹象表明这本书只有一位作者。事实上,表格的设计特别暗示了一些书籍有多个作者。
标签: sql