仅借用指定作者和编辑的所有书籍的借款人

对于给定的作者和编辑,我需要列出借用“仅”“所有”该作者和编辑的书籍的借款人的姓名

  • 成员(中间主键、姓名、生日)
  • AUTHOR(作者代码主键,姓名)
  • EDITOR(edcode主键,名称)
  • BORROW(出价主键,copyid,mid)
  • COPIES(copyid 主键,bookid)
  • BOOK(bookid 主键、标题、主题代码)
  • THEME(主题码主键,标签)

我尝试了以下方法:

SELECT m.name
FROM  MEMBER m,COPIES c,BORROW b1,BOOK b,AUTHOR a,EDITOR e,WRITE w
WHERE m.mid=b1.mid AND b1.copyid=c.copyid AND c.bookid=b.bookid AND b.editor=e.edcode AND a.authorcode=w.author AND w.book=b.bookid 
MINUS
(SELECT m.name
FROM  MEMBER m,COPIES c,BORROW b1,BOOK b,AUTHOR a,EDITOR e,WRITE w
WHERE m.mid=b1.mid AND b1.copyid=c.copyid AND c.bookid=b.bookid AND b.editor=e.edcode AND a.authorcode=w.author AND w.book=b.bookid AND (a.authorcode<>:P58_AUTHOR OR e.edcode<>:P58_EDITOR)    
)

它给了我一个会员,他至少借过一本书,除了那个作者和编辑之外没有借过任何书,所以我需要确保他借了所有的书。

骨师

我认为以下内容将为您提供所需的内容:

WITH book_ed_auth_dets AS (SELECT b.bookid,
                                  a.authorcode,
                                  e.edcode,
                                  COUNT(*) OVER (PARTITION BY a.authorcode, e.edcode) tot_num_bks_per_auth_ed
                           FROM   book b
                                  INNER JOIN WRITE w ON b.bookid = w.book
                                  INNER JOIN author a ON w.author = a.authorcode
                                  INNER JOIN editor e ON b.editor = e.edcode
                           WHERE  a.authorcode = :p58_author
                           AND    e.edcode = :p58_editor)
SELECT m.name
FROM   MEMBER m
       INNER JOIN borrow b1 ON m.mid = b1.mid
       INNER JOIN copies ON c.bookid ON b1.copyid = c.copyid
       INNER JOIN book_ed_auth_dets bead ON c.bookid = bead.bookid
GROUP BY m.id,
         m.name,
         bead.authorcode,
         bead.edcode
         bead.tot_num_bks_per_auth_ed
HAVING   COUNT(DISTINCT bead.bookid) = bead.tot_num_bks_per_auth_ed);

NB 未经测试,因为您没有提供要使用的示例数据。

这将查找给定作者和编辑的书籍,并使用分析计数为每一行写出该作者和编辑的书籍总数。

然后我们将成员的借书数与该成员的借书数进行内联,找出不同 bookid 的数量(以防成员多次借同一本书),如果该数量与作者和编辑的图书数量匹配,则仅报告成员。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

借款人使用NOT EXISTS取得所有贷款

如何过滤书籍,以便在使用 ListView 和 DetailView (Django) 时获得作者书籍而不是所有可用书籍

查询DBPedia以获取作者的所有书籍

结合数据框架,以熊猫为单位将贷方分配给借款人

创建具有多个作者、书籍和类别的表格

使用 r 在數據框中查找借款人最後一次違約的開始

仅使用作者姓名获取所有帖子

Python代码可根据售出的书籍数量查找所有人

向量借用和所有权

线程上对象的借用和所有权

类型推断和借用与所有权转移

如何从CSV文件中仅提取和路由指定的列并删除所有其他列

为所有人编辑一个

如何让机器人找到频道所有者/与作者的 ID 进行比较

有人可以建议一些指南,书籍或视频进行Rails的身份验证和授权吗?

删除作者的所有提交

仅获取协作者,而不是github存储库ORG的所有者

Meteor - 发布所有作者且仅发布最后一篇文章的最佳方法

更改所有分支机构的作者和提交者的姓名和电子邮件

使用 JavaScript .map() 和 .filter() 按 lang 搜索作者/书籍数据模块

Postgres查询只有一名作者的归还书籍

Java如何制作一个可以有一个或多个作者的书籍类

Mysql显示拥有超过一本书的作者的书籍标题

一笔可变借款和多笔不可变借款

获取提交的所有注释,包括他们的作者和提交者

如何通过 ASIN 从亚马逊检索所有书籍类别?

拥有所有权和借用以及在多个线程之间共享实例的麻烦

Java-使静态嵌套类对所有人可见,但仅由父级和父级的子类构造

获取特定作者的所有href