par
Hubert Roksor » 17 avr. 2007, 04:17
Il te faut enlever les champs "film_genres" de la table "films" et créer une table "films_genres" dont les colonnes seraient ("film_id", "genre_id") et qui servirait à faire le lien entre un film et les différents genres auxquels il appartient. Fais des recherches sur le forum et sur ton moteur de recherche préféré sur les procédés de "normalisation" ou "formes normales".
Ainsi, il devient facile de faire ce que tu recherches:
Code : Tout sélectionner
SELECT f.film_titre, g.genre_titre
FROM films f
JOIN films_genres fg USING (film_id)
JOIN genres g USING (genre_id)
WHERE f.film_id = 1
"films" est liée à "films_genres" par la colonne "film_id", et "films_genres" est liée à "genres" par la colonne "genre_id". De cette façon, un film peut avoir de 0 à une infinité de genres sans que tu aies à changer tes requêtes.
Une astuce : définis ("film_id", "genre_id") comme clé primaire et "genre_id" comme index de la table.
Il te faut enlever les champs "film_genres" de la table "films" et créer une table "films_genres" dont les colonnes seraient ("film_id", "genre_id") et qui servirait à faire le lien entre un film et les différents genres auxquels il appartient. Fais des recherches sur le forum et sur ton moteur de recherche préféré sur les procédés de "normalisation" ou "formes normales".
Ainsi, il devient facile de faire ce que tu recherches:
[code]SELECT f.film_titre, g.genre_titre
FROM films f
JOIN films_genres fg USING (film_id)
JOIN genres g USING (genre_id)
WHERE f.film_id = 1[/code]
"films" est liée à "films_genres" par la colonne "film_id", et "films_genres" est liée à "genres" par la colonne "genre_id". De cette façon, un film peut avoir de 0 à une infinité de genres sans que tu aies à changer tes requêtes.
Une astuce : définis ("film_id", "genre_id") comme clé primaire et "genre_id" comme index de la table.