-2

結果から何かを除外しようとしています。

1 つは映画、1 つはジャンル、1 つはこれら 2 つを結合する 3 つのテーブルに参加しています。

その結果、各ジャンルの各映画の行が表示されます。

したがって、3 つのジャンルごとに 2 つの映画がある場合、6 つの結果が得られます。

今、私はこの特定のジャンルの映画は欲しくないと言えるようになりたい. これを行うとAND tblmoviegenre.ID <> genre.ID、行が 1 行少なくなりますが、特定のジャンルの行が 1 行ないだけで、映画はまだ結果に含まれています。

これを修正する方法を知っている人はいますか?

4

3 に答える 3

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)

58 を、フィルタリングするジャンルの ID に置き換えます

于 2012-08-28T19:31:12.920 に答える
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)
于 2012-08-28T19:30:18.223 に答える
0

あなたの3番目のテーブルが

    | 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); 
于 2012-08-28T19:33:04.523 に答える