表记录:电影如何选择不会出现在另一个表
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