查询吸引所有借书的读者

时间:2019-05-08 16:36:08

标签: sql oracle

我需要解决这个以前从未遇到过的问题。我需要让读者借用表Book中的所有书籍。

谢谢您的帮助。

表格:

Reader (id, name, address, birthdate, contact)
Book (isbn, title, publisher, recomended_price)
BookCopy (copy_no, price, year, Book_isbn)
BookLoans (id, date_of_borrow, date_of_return, Reader_id, BookCopy_copy_no)

2 个答案:

答案 0 :(得分:0)

可以请您检查此脚本的工作与否。如果没有,请为每个表和您的预期输出添加一些示例数据。

SELECT R.ID,R.name,COUNT(DISTINCT BC.Book_isbn)
FROM BookLoans BL
INNER JOIN BookCopy BC ON BL.BookCopy_copy_no = BC.copy_no
INNER JOIN Reader R on BL.Reader_id = R.id
GROUP BY R.ID,R.name
HAVING COUNT(DISTINCT BC.Book_isbn) = (SELECT COUNT(DISTINCT isbn) FROM Book)

答案 1 :(得分:0)

您可以尝试以下方法:

         SELECT rd.id

           FROM Reader rd,
                Book bk

LEFT OUTER JOIN BookLoans bl
             ON bl.Reader_id = rd.id

LEFT OUTER JOIN BookCopy bc
             ON bc.copy_no = bl.BookCopy_copy_no
            AND bc.Book_isbn = bk.isbn

       GROUP BY rd.id

         HAVING COUNT(bk.isbn) - COUNT(bc.Book_isbn) = 0

…但这绝对不是开始学习的最简单查询。