问题描述
||
Q. List the branch id and name of all branches that have atleast 2 copies of every
book.
表格:
BOOK (Book_ISBN [pk],Title,Publisher_Name [fk])
BOOK_COPIES (Book_ISBN [pk,fk],Branch_ID [pk,Num_Copies)
LIBRARY_BANCH (Branch_ID [pk],Branch_Name,Address)
但是,我试着做这个问题,但是问题是检查2个副本。
解决方法
您可能会发现有关关系划分的这篇文章很有用。
SELECT L.Branch_ID,L.Branch_Name
FROM LIBRARY_BRANCH L
WHERE NOT EXISTS (SELECT *
FROM BOOK B
WHERE NOT EXISTS(SELECT *
FROM BOOK_COPIES BC
WHERE BC.Book_ISBN = B.Book_ISBN
AND Num_Copies >= 2
AND L.Branch_ID = BC.Branch_ID))