Microsoft Access:筛选出有缺陷的电影和已租借的电影

Microsoft Access: Filter out Movies with Faults, and movies that are already rented

我有一个电影业务数据库,其中有一张 DVD table(DVDID、标题、故障)和一张租借 table(RentalID、MemberID、DVDID、DateRented、DateReturned)。

我想查询以确定哪些电影可供租用。为此,需要排除 DVD table 中有故障的 DVD,以及租借中未归还的 DVD table。

已知当 DVD table 的 'Fault' 列中有内容时,DVD 会出现故障。如果该字段为空,则 DVD 没有故障。已知当租赁 Table.

的 'DateReturned' 字段中有内容时,DVD 会被退回

到目前为止,我已经设法排除了有缺陷的 DVD 并排除了租借中的 DVD table,但这需要改进,因此它只排除租借中的 DVD table 如果DateReturned 字段为 Null。

SELECT DVD.DVDID, DVD.Title, DVD.Rating, DVD.Genre, DVD.Released, DVD.RentalPeriod, DVD.Distributor, DVD.Faults
FROM DVD
WHERE (((DVD.Faults) Is Null) AND ((Exists (SELECT 1 FROM Rental WHERE Rental.DVDID = DVD.DVDID))=False));

有人知道我如何完成这个吗?

假设这会向您显示已租借但尚未归还的 DVD...

SELECT DVDID
FROM Rental
WHERE DateReturned Is Null;

将其用作子查询,然后 LEFT JOIN 您的 DVD table 使用它。

SELECT
    DVD.DVDID,
    DVD.Title,
    DVD.Rating,
    DVD.Genre,
    DVD.Released,
    DVD.RentalPeriod,
    DVD.Distributor,
    DVD.Faults
FROM
    DVD
    LEFT JOIN
        (
            SELECT DVDID
            FROM Rental
            WHERE DateReturned Is Null
        ) AS sub
        ON DVD.DVID = sub.DVID
WHERE
        DVD.Faults Is Null
    AND sub.DVID Is Null;

WHERE条款中,DVD.Faults Is Null排除有过错的,sub.DVID Is Null排除已租未还的