Bonjour,

Je travaille actuellement sur un projet de développement de site web et je rencontre un problème pour l'élaboration d'une requête SQL imbriquée.

Voici une partie des tables de ma BDD :

Extrait de la table `films`
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
(
  `id` int(11) NOT NULL auto_increment,
  `date_sortie` varchar(100) NOT NULL,
  `annee_production` int(11) NOT NULL,
  `titre` varchar(150) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=218 ;

Extrait de la table `films_genres`
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
(
  `id_film` int(11) NOT NULL,
  `id_genre` varchar(11) NOT NULL,
  PRIMARY KEY  (`id_film`,`id_genre`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
--Extrait du contenu de la table `films_genres`
--

(3, '19'),
(3, '5'),
(10, '6'),
(170, '1'),
(170, '8'),
(188, '1'),
(188, '11'),
Extrait de la table `genres`
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
(
  `id` int(11) NOT NULL auto_increment,
  `nom` varchar(50) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=32 ;
--
-- Extrait du contenu de la table `genres`
--

(1, 'Action'),
(2, 'Animation'),
(3, 'Art Martiaux'),
(4, 'Aventure'),
(5, 'Biopic'),
(6, 'Comédie'),

En fait, je sélectionne l'ensemble des films dont l'un des genre est "Action". A partir de ce résultat, je doit sélectionner les autres genres de chaque film.
Pour cela, je fait la requête suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
SELECT * FROM films_genres fg, films, genres
WHERE                                                                                                 id_film IN ( SELECT id_film FROM films_genres WHERE id_genre=$id_genre )
AND
  fg.id_genre = genres.id
ORDER BY 
  films.id ASC;
La requête fonctionne a moitié car elle me retourne trop de résultats (20 pages) avec plusieurs fois le même film. Moi je doit retourner chaque film une fois, avec l'ensemble des genres leur étant liés.

Voilà, j'espère que quelqu'un pourra me venir en aide.

Merci beaucoup !