[MySQL] Afficher plusieurs genre pour un film

paul -  
 paul -
Bonjour,

J'ai 3 tables :

film(numFilm,nomFilm)
appartenir(numGenre,numFilm)
Genre(numGenre,nomGenre)

Je voudrais afficher la liste des films qui ont plusieurs genres mais je n'y arrive pas. Pouvez-vous m'aider svp ?

Merci d'avance.

Exemple : j'ai classé Titanic le genre romance et dans le genre drame.

Je pensais faire :

SELECT nomFilm, nomGenre
FROM film, appartenir, genre
WHERE film.numFilm = appartenir.numFilm
AND appartenir.numGenre = genre.numGenre

mais j'obtiens bien sûr mon film affiché 2 fois avec ses 2 genres

Pouvez-vous m'aider svp ?
Configuration: Windows XP
Firefox 2.0.0.11

3 réponses

  1. paul
     
    Bonsoir,

    J'utilise 3 tables parce que 1 film peut appartenir à 1 ou plusieurs genre (cardinalité 1, N) et 1 genre contient plusieurs Films (cardinalité 1, N également), donc l'association au niveau physique devient une table qui prend en comme champs la concaténation des identifiants des entités Film et Genre (numFilm et numGenre).

    Je ne veux pas modifier mon MCD, je suis sûr qu'il est possible de faire la requête avec les 3 tables mais je n'arrive pas à faire la requête SQL.

    Je veux que le résultat soit par exemple pour mon film Titanic

    nomFilm nomGenre
    Titanic Romance, Drame

    Je pensais à :

    SELECT nomFilm, nomGenre,
    FROM film, appartenir, genre
    WHERE film.numFilm = appartenir.numFilm
    AND appartenir.numGenre = genre.numGenre
    GROUP BY film.nomFilm;

    mais mysql m'affiche seulement 1 seul fois le nom du film avec son 1er genre

    Peux-tu m'aider ?
    0
  2. naruto-94 Messages postés 904 Statut Membre 188
     
    Pourquoi utilise tu 3 tables ? tu ferais bien mieu d'utiliser 1 seul table avec tout les champs .

    comme sa tu auras 1 table description_film avec comme champs "id,nomFilm,genre"

    SELECT *
    FROM description_film
    WHERE id = $id ou $_GET['id'] ou $_POST['id']

    puis pour avoir plusieur genre et ben si par exemple tu rentre la description par un formulaire deroulant ( pour le champ genre ) tu fais en sorte que tu puisse dire le nombre x de genre que tu veux pour le film puis ensuite x champ de formulaire apparaitront pour le champ "genre" et pour recuperer les 2 resultat tu fais

    $genre = $genre1 ."/". $genre2

    $genre1 = le premier genre choisi
    $genre2 = le deuxieme genre choisi
    $genre = resultat final qui sera envoyer sur la bdd ex resultat : "Action / Thriller"

    dis le moi si tu ne comprend pas..je n'explique pas tres bien
    -1