2012-08-28 41 views
-2

我想從我的結果中排除某些東西。排除SQL與連接

我加入3個表,1,電影,1流派和1至2這些

合體,因此結果給出了一排每部電影爲每個流派。

所以,如果我有兩部電影,每種類型都有6個結果。

現在我希望能夠說我不想要一部具有這種特殊風格的電影。如果我通過說AND tblmoviegenre.ID <> genre.ID來做到這一點,我只得到1行,但電影仍然在結果中,沒有那一行的specefic流派。

有誰知道如何解決這個問題?

+2

請張貼一些代碼... – Ankur

回答

3

我不確定你想要什麼。如果我得到它,這應該做工精細

select distinct M.IdMovie, M.MovieName --And Other Fields 
from Movies M 
inner join MoviesPerGenre MPG on M.IdMovie = MPG.IdMovie 
inner join Genre G on MPG.IdGenre = G.IdGenre 
where M.IdMovie not in (Select IdMovie from MoviesPerGenre where IdGenre = 58) 

與Id的流派取代58要篩選

0

你想排除電影,如果它有這種流派,即使它也是在其他流派不被排除?

select <whatever> 
from movie, genre, moviegenre 
where <join conditions> 
and not exists (select 'x' from moviegenre where movie.id = moviegenre.id and moviegenre = "some genere you want to exclude) 
0

比方說,你的第三個表是

| movie | genre 
---------- ------------- 
     1 | 2 
     2 | 2 
     3 | 3 
     3 | 2 
     4 | 1 

,現在你想排除所有類型2,那麼你可以寫

SELECT movie.name,genre.name 
FROM movie inner join combine_info on movie.id = combine_info.movie, 
     genre inner join combine_info on genre.id = combine_info.movie 
WHERE movie.id NOT IN(SELECT movie 
          FROM combine_info 
          WHERE genre = 2); 
+0

對老j說不, oin語法! –

+0

@ElVieejo爲什麼會這樣,是否會導致性能問題? – Ankur

+0

很難閱讀,內部連接更具有表達性 –