Запрос для читателей, которые позаимствовали ВСЕ книги - PullRequest
0 голосов
/ 08 мая 2019

Мне нужно помочь с этой проблемой, с которой я никогда не сталкивался. Мне нужно найти читателей, которые позаимствовали ВСЕ книги из таблицы 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 голосов
/ 08 мая 2019

Вы можете попробовать это:

         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

… но это определенно не самый простой запрос для начала обучения.

0 голосов
/ 08 мая 2019

Можете ли вы проверить работу этого скрипта или нет. Если нет, добавьте несколько примеров данных для каждой таблицы и ожидаемый результат.

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...