表記錄:電影如何選擇不會出現在另一個表
mID title year director
101 Gone with the Wind 1939 Victor Fleming
102 Star Wars 1977 George Lucas
103 The Sound of Music 1965 Robert Wise
104 E.T. 1982 Steven Spielberg
105 Titanic 1997 James Cameron
106 Snow White 1937 <null>
107 Avatar 2009 James Cameron
108 Raiders of the Lost Ark 1981 Steven Spielberg
表:評分
rID mID stars ratingDate
201 101 2 2011-01-22
201 101 4 2011-01-27
202 106 4 <null>
203 103 2 2011-01-20
203 108 4 2011-01-12
203 108 2 2011-01-30
204 101 3 2011-01-09
205 103 3 2011-01-27
205 104 2 2011-01-22
205 108 4 <null>
206 107 3 2011-01-15
206 106 5 2011-01-19
207 107 5 2011-01-20
208 104 3 2011-01-02
我需要獲取其尚未爲電影評分。在這種情況下,泰坦尼克號(mID 105)和星球大戰(mID 102)從未在評級表中獲得評分。
我想通了,它與
從電影中選擇不同的movie.title,額定容量。這裏 rating.mid!=,除了選擇不同movie.title movie.mid從 電影,評級,其中rating.mid = movie.mid
但是我想可能有更好(更容易/清潔劑)的方式來做。
提示:'... LEFT JOIN ... WHERE IS RATINGDATE NULL' – MicSim
@HLGEM不同意 - 隱式連接是不是一個反模式,它們僅僅是不是SQL ANSI標準,其中明確定義了JOIN語法的一部分。鑑於自Codd以來隱式連接已經存在,在ANSI標準之前有相當大的空間,並且在性能路徑上與顯式連接完全沒有區別,這只是一種風格偏好。 –
不,這不是一種文體上的偏好。隱含連接導致問題。如果您使用內部聯合和外部聯接的組合,您可以創建意外的corss聯接,您可能會得到不好的結果,並且tey更難以維護。這是一個記錄的反模式。使用它們和許多缺點沒有好處。也許你應該閱讀:http://www.amazon.com/SQL-Antipatterns-Programming-Programmers-ebook/dp/B00A376BB2/ref=sr_1_1?s = digital-text&ie = UTF8&qid = 1377180059&sr = 1-1&keywords = sql +反模式 – HLGEM