Movie(title, year, director, budget, earnings)
Actor(stagename, realname, birthyear)
ActedIn(stagename, title, year, pay)
CanWorkWith(stagename, director)
我需要找到所有從來沒有在一部電影已經實現了盈利(盈利>預算)工作的參與者(藝名和真實姓名)。因此,找到所有的壞角色:P
SELECT A.stagename, A.realname
FROM Actor A
WHERE A.stagename NOT IN
(SELECT B.stagename
FROM ActedIN B
WHERE EXIST
(SELECT *
FROM Movie M
WHERE M.earnings > M.budget AND M.title = B.title AND M.year))
這會發現所有其藝名沒有出現在第二個查詢的演員?第二個查詢將查找在獲利的電影中執行的所有階段名稱。
這是正確的嗎?
不確定它是否重要,但是「AND M.earnings> M.budget」應該在左連接上,否則它會將其變成INNER連接 –
@DJ。你是對的,這裏可能無所謂,但我會移動它。 –
LEFT JOIN = LEFT OUTER JOIN導致我在筆記中顯示的內容 – George