我正在研究实验室问题,我无法提出解决方案,这样我就可以找出拥有多一位作者的书籍(请参阅下面发布的问题,以便我的意见有意义)。我的想法完全是空白的。我对单词问题非常不满意。我知道我必须做一个我已经完成的JOIN声明,我知道我必须使用COUNT函数来计算作者的数量,但老实说我不知道如何只计算有的书籍2位作者。
任何输入都将不胜感激。我试图把它分解成几个步骤,但这只是我脑子里没有抓住的一部分。
BOOKS表和AUTHOR表由BOOK_AUTHOR表通过BOOKS中的BOOKID和AUTHOR中的AUTHORID连接。
我想我开始明白我必须用一个数学方程来找出一个以上的作者。我不太了解HAVING功能,所以我将对此进行更多的研究。
答案 0 :(得分:1)
你是对的,你需要一个JOIN
,一个COUNT
,还需要一个HAVING
来确保有超过一位作者写这本书:
select title as 'Book Title', count(authors) as 'Number of Authors'
from books
join authors on books.id = authors.book_id
having count(authors) > 1
group by authors;
确保将表名和列调整到正确的名称和列,因为您没有发布它们。
请注意,如果图书的作者ID列与作者ID同名,则可以使用USING
关键字加入。那么你的查询就会变成
select title as 'Book Title', count(authors) as 'Number of Authors'
from books
join authors on using(book_id)
having count(authors) > 1
group by authors;
请注意,如果您只想选择专门拥有2位作者的图书,则可以将having子句更改为having count(authors) = 2
。但即使你在问题中提出这个要求,根据你粘贴的练习,你也不能正确理解这个问题。
答案 1 :(得分:0)
我终于在你的帮助下找到了答案。请参阅以下内容:
SELECT DISTINCT Title "Book Title", COUNT(*)"Number of Authors"
FROM BOOKS JOIN
BOOK_AUTHOR ON
BOOKS.BookId = BOOK_AUTHOR.BookId
JOIN AUTHOR ON
BOOK_AUTHOR.AuthorId = Author.AuthorId
GROUP BY Title
HAVING COUNT(*) > 1;