【发布时间】:2013-10-25 00:20:50
【问题描述】:
已经创建且不可修改的表是 Book 和 Author。
图书(书名、价格、已发行年份)
作者(AName,btitle,position)
斜体是键 Author 中的 Btitle 是引用 Book(Title) 的外键。
我的 SQL 查询:
select distinct AName
from Author
where position in (2,3) AND position<>1
group by AName
当我运行此程序时,我会得到所有在位置 2 或 3 中拥有一本书的作者。这正是我想要的,但我只是试图让那些在所有书籍中拥有位置 2 或 3 的作者。 基本上返回所有书籍中排名第 2 或第 3 位的所有作者。
【问题讨论】:
-
此架构需要修复。应该类似于:
Book(book_id, Title, Price, Yearreleased, position, author_id)和Author(author_id, AName),其中book_id和author_id是自增主键。Book中的author_id是Author的外键。不要使用Title作为主键,因为可以有不同的书同名。 -
书本不应该有 author_id 列吗?我希望 btitle 并不意味着“书名”。您需要重新考虑您的模型
-
我目前正在为这种做法使用一套模式。 btitle 确实指的是书名。我只是想知道如何只显示所有书籍的位置为 2 或 3 的那些人
-
顺便说一句,您的
position<>1条件是多余的。