我想從我的結果中排除某些東西。排除SQL與連接
我加入3個表,1,電影,1流派和1至2這些
合體,因此結果給出了一排每部電影爲每個流派。
所以,如果我有兩部電影,每種類型都有6個結果。
現在我希望能夠說我不想要一部具有這種特殊風格的電影。如果我通過說AND tblmoviegenre.ID <> genre.ID
來做到這一點,我只得到1行,但電影仍然在結果中,沒有那一行的specefic流派。
有誰知道如何解決這個問題?
我想從我的結果中排除某些東西。排除SQL與連接
我加入3個表,1,電影,1流派和1至2這些
合體,因此結果給出了一排每部電影爲每個流派。
所以,如果我有兩部電影,每種類型都有6個結果。
現在我希望能夠說我不想要一部具有這種特殊風格的電影。如果我通過說AND tblmoviegenre.ID <> genre.ID
來做到這一點,我只得到1行,但電影仍然在結果中,沒有那一行的specefic流派。
有誰知道如何解決這個問題?
我不確定你想要什麼。如果我得到它,這應該做工精細
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要篩選
你想排除電影,如果它有這種流派,即使它也是在其他流派不被排除?
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)
比方說,你的第三個表是
| 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);
請張貼一些代碼... – Ankur