DVD租赁公司的SQL Server查询

时间:2012-10-13 04:00:56

标签: sql

我有一个电影租赁业务的示例数据库。我正在尝试编写一个查询,查找当前售罄的所有电影。

  • 目前租用该影片的所有DVD。或...
  • 该影片不存在DVD

请记住,我想确保此查询不会捕获库存中但从未出现在租借表中的DVD。

编辑:这是我到目前为止所做的,但我无法解释上面一行中的情景^。

SELECT Count(DvdID) AS Inventory, Movie.Title
FROM Dvd
JOIN Movie on Dvd.MovieID = Movie.MovieID
WHERE Dvd.DvdID IN
    (SELECT RentalID
    FROM Rental
    WHERE Rental.ReturnDate IS NULL)
OR Dvd.DvdID NOT IN
    (SELECT Dvd.DvdID
    FROM Dvd
    WHERE DvdID NOT IN
    (SELECT Rental.DvdID FROM RENTAL)
    )

GROUP BY Movie.Title

TABLES:

电影

-MovieID

-MovieTitle

DVD

-DvdID

-MovieID

租赁

-RentalID

-DvdID

-AccountID

-RentalDate

-ReturnDate

1 个答案:

答案 0 :(得分:0)

您只需要纠正第一个子查询中的错误 - 应该是DvdID而不是RentalID。这个查询对我有用,适合你吗?

查询:

SELECT Count(DvdID) AS Inventory, MovieTitle
FROM Dvd
JOIN Movie on Dvd.MovieID = Movie.MovieID
WHERE Dvd.DvdID IN
    (SELECT DvdID
    FROM Rental
    WHERE Rental.ReturnDate IS NULL)
OR Dvd.DvdID NOT IN
    (SELECT Dvd.DvdID
    FROM Dvd
    WHERE DvdID NOT IN
    (SELECT Rental.DvdID FROM RENTAL)
    )
GROUP BY MovieTitle