Comment récupérer des données à partir de deux tables liées à l'aide d'une troisième table, SQL Server

J'ai trois tables (simplifiées)

movie(id int primary key identity, title varchar(20) not null) genre(id int primary key identity, type varchar(10) not null) movie_genre(movie_id int references movie(id), genre_id int references genre(id), primary key(movie_id, genre_id)) 

Données dans le film

 id title --------------------------- 1 | Inception 2 | The Dark Knight 

Données dans le genre

 id type --------------------- 1 | action 2 | adventure 3 | thriller 

Données dans movie_genre

 movie_id genre_id ---------------------------- 1 | 1 1 | 2 2 | 1 2 | 3 

Je veux afficher le nom du film avec ses types de genre affichés dans une colonne. Ainsi, la sortie serait

 title | genres ----------------------------------------- Inception | action adventure The Dark Knight | action thriller 

J'ai essayé de le faire de cette façon

 select movie.title, genre.type from movie, genre where movie.id = movie_genre.movie_id and genre.id = movie_genre.genre_id; 

mais il dit:

L'identificateur en plusieurs parties "movie_genre.movie_id" n'a pas pu être lié.
L'identificateur en plusieurs parties "movie_genre.genre_id" n'a pas pu être lié.

Je suis très nouveau à SQL, toute aide serait appréciée.

Modifier :
En utilisant

 SELECT G.[Type] ,M.[Title] FROM movie_genre MG LEFT JOIN genre G ON MG.genre_id = G.ID LEFT JOIN movie M ON MG.Movie_ID = M.ID 

OU

 select movie.title, genre.type from movie, genre, movie_genre where movie.id = movie_genre.movie_id and genre.id = movie_genre.genre_id; 

La sortie est maintenant,

  title | genres ----------------------------------------- Inception | action Inception | adventure The Dark Knight | action The Dark Knight | thriller 

Comment pourrais-je afficher les genres dans une rangée?

 SELECT G.[Type] ,M.[Title] FROM movie_genre MG LEFT JOIN genre G ON MG.genre_id = G.ID LEFT JOIN movie M ON MG.Movie_ID = M.ID 

Pour get une list

 SELECT DISTINCT M.[Title] ,STUFF(( SELECT ' ' + G.[Type] FROM genre G INNER JOIN movie_genre MG ON MG.genre_id = G.ID WHERE MG.Movie_id = Mov.Movie_id FOR XML PATH(''),TYPE) .value('.','NVARCHAR(MAX)'),1,1, '') Genre FROM movie_genre Mov INNER JOIN movie M ON Mov.Movie_ID = M.ID 

OU

 SELECT DISTINCT M.[Title] ,STUFF(List,1,1, '') Genre FROM @movie_genre Mov INNER JOIN @movie M ON Mov.Movie_ID = M.ID CROSS APPLY ( SELECT ' ' + G.[Type] FROM @genre G INNER JOIN @movie_genre MG ON MG.genre_id = G.ID WHERE MG.Movie_id = Mov.Movie_id FOR XML PATH('') )Gen(List) 

SQL FIDDLE

Je crois que vous devrez append le "movie_genre" à FROM, par exemple:

 SELECT movie.title, genre.type FROM (movie, genre, movie_genre) WHERE ....