我有三個SQL表(Movies,MovieCopy和RentalTransactions)。電影保存有關電影的數據,MovieCopy保存與特定DVD的副本數量有關的數據,並且用作電影和RentalTransactions之間的關聯實體,RentalTransactions保存關於電影租賃的數據。SQL Select Statement Duplicates
電影有10行數據(電影1,電影2,電影3等10)。 MovieCopy有30行,這30行由Movies表中10個電影中的每一個的3個副本組成。 RentalTransactions有10行,與MovieCopy中的前10行相關。
我試圖運行一個報告,它會顯示所有類型爲'DVD'的電影,這些電影目前還沒有借出,因此這將是MovieCopy表中剩餘的20部電影副本。
下面是我的SQL代碼試圖拉這個報告,但是當我執行這個SQL時,我返回290行,我不知道爲什麼這是完全發生,理想情況下,我想看到只有20行MovieCopy這些不在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;
任何人都可以看到我的錯誤嗎?
我將如何去設置它爲true/false取決於它是否出租或不? 我猜只知道它是否被租用的唯一方法是如果在RentalTransactions中存在MovieCopy_ID? – Eoin090
當事件發生時,您可以使用UPDATE查詢修改正確MovieCopy的標誌並將其設置爲true/false。您將需要更改表以添加新列。正如我所說,技術上你在做什麼*可以*工作,但它有主要的缺點。值得注意的是,你將不得不刪除以前的租金,以再次租用該電影的副本。這使得不可能保持歷史。您必須首先在單獨的「TransactionHistory」表中創建數據副本,然後刪除前一個表中的數據。 – ApplePie