我正在为图书馆制作一个网页,我需要制作一个列表,显示过去一年内没有租用的所有图书 .
目前我有一个查询过滤租赁表,其中所有记录都是租借的书籍 . 但可以多次租用,以便一本书可以在表格中多次出现 . 问题是,当一本书没有租给一个人超过一年,但同一本书在过去一年内租给另一个人时,它仍然显示该书,因为它看到一本记录满足条件 . 但我需要知道去年哪本书根本没有租来 . 任何人都可以帮助我吗?
我将实际查询更改为更容易理解的查询(语言差异),因此不要检查错误的拼写或简单的语法问题 .
我的查询a.t.m . :
SELECT
Book.BookID,
Book.BoekTitle,
Writer.WriterName
FROM (
(Book INNER JOIN BookWriter ON Book.BookID=BookWriter.BookID)
INNER JOIN Writer ON BookWriter.WriterID=Writer.WriterID
)
INNER JOIN BookRenting ON Book.BookID=BookRenting.BookID
WHERE
BookRenting.RentDate < DATEADD('yyyy', -1, NOW());
我使用MS Access数据库!
在此先感谢您的帮助!
3 回答
首先,您可能需要处理从未租借过该书的情况 . 这需要外连接 .
这应该可以满足您的需求:
并且,我想补充一点,书籍可以有多个作家 . 您仍将在输出中获得重复项 .
我认为这可以归结为以更好的方式构建查询 .
尝试使用
NOT IN <subquery>
而不是连接 . 这使您的查询更加模块化,更易于理解:我没有Access,所以我没有测试过这个
看来你错过了
<sometablehere> INNER JOIN Writer ON BookWriter.WriterID=Writer.WriterID
所以它可能看起来像: