我有三个SQL表(Movies,MovieCopy和RentalTransactions)。电影包含有关电影的数据,MovieCopy包含与特定DVD等的副本数量有关的数据,并用作电影和RentalTransactions之间的关联实体,RentalTransactions包含有关电影租赁的数据。

电影具有10行数据(电影1,电影2,电影3等最多10行)。 MovieCopy有30行,这30行由Movies表中的10部电影中的每3部组成。 RentalTransactions有10行,与MovieCopy中的前10行相关。

我正在尝试运行一个报告,该报告将向我显示当前未出租的所有“ DVD”类型的电影,因此这将是MovieCopy表中剩余的20个电影副本。

以下是我尝试获取此报告的SQL代码,但是当我执行此SQL时,我返回了290行,所以我不确定为什么会发生这种情况,理想情况下,我只希望在MovieCopy中仅看到20行, RentalTransactions。

Select Movies.Movie_Name, Movies.Movie_Type,
    Movies.Movie_Medium, Count(MovieCopy.Movie_CopyID) as Copies
FROM Movies,MovieCopy,RentalTransactions
WHERE Movies.Movie_Medium = 'DVD' and Movies.MovieID = MovieCopy.MovieID
    and MovieCopy.Movie_CopyID <> RentalTransactions.Movie_CopyID;


谁能看到我的错误?

最佳答案

Select Movies.Movie_Name, Movies.Movie_Type,
    Movies.Movie_Medium, Count(MovieCopy.Movie_CopyID) as Copies
FROM Movies,MovieCopy,RentalTransactions
WHERE Movies.Movie_Medium = 'DVD' and Movies.MovieID = MovieCopy.MovieID
    and MovieCopy.Movie_CopyID NOT IN (SELECT Movie_CopyID FROM RentalTransactions );

关于mysql - SQL Select语句重复,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20455395/

10-13 08:56