回写曾写过两部以上小说的作者的姓名,名字和姓氏

时间:2017-11-12 02:16:04

标签: mysql database

我的数据库中有三个表

作者:援助| fname | L-NAME

书:isbn |标题| btype |价格| pub_date | PID

Written_by:isbn(参考book.isbn)|援助(参考author.aid)

我试图回复所有写过两本以上btype“小说”的作者的名字和姓氏。我确实找到了this问题,这个问题将选择一般写过两本以上书籍的作者,但我无法弄清楚如何修改它以专注于小说。有什么建议吗?

select aid, fname, lname 
from author 
where aid in (
    select aid
    from written_by
        join book on book.isbn = written_by.isbn
    group by aid
    having count(*) > 2
); 

编辑:想出来。在where btype = "novel"之前添加了group by,现在可以正常运行了。

2 个答案:

答案 0 :(得分:1)

想出来。在where btype = "novel"之前添加了group by,现在可以正常运行了。

答案 1 :(得分:0)

有几种方法可以形成此查询。你曾经使用IN()这是一个你应该知道的替代方案。

使用内部联接

select aid, fname as "First Name", lname as "Last Name"
from author a
inner join (
    select aid
    from written_by
        join book on book.isbn = written_by.isbn
    where btype = 'novel'
    group by aid
    having count(*) > 2
    ) g on a.aid = g.aid

注意使用单引号作为文字,例如'novel'双引号用于标识,例如包含空格的列别名。