cs_Straw
Messages postés33Date d'inscriptionjeudi 10 mars 2005StatutMembreDernière intervention25 août 2008
-
25 août 2008 à 09:17
nicomilville
Messages postés3472Date d'inscriptionlundi 16 juillet 2007StatutMembreDernière intervention28 février 2014
-
25 août 2008 à 11:24
Bonjour à tous et merci d'avance pour ceux qui pourront m'aider,
Je ne maîtrise pas encore très bien les requêtes de jonction, mais celle-ci va certainement vous paraître simple...
Je dois lister des films et des acteurs. Chaque film pouvant avoir plusieurs acteurs, et chaque acteurs plusieurs films.
J'ai donc 3 tables :
<li>Une table FILMS (avec id_film, titre, realisateur)</li><li>Une table ACTEURS (avec id_acteur, nom, prénom)</li><li>Une table de jonction FILMS_ACTEUR (avec id_film et id_acteur)</li>Voici ma requête pour afficher tous les films, et en dessous, les acteurs du film.
$sql= "select titre, id_film from films order by titre";
$rs=mysql_query($sql) or die (mysql_error());
while ($row=mysql_fetch_assoc($rs)) {
print "
";
print "".$row["titre"]."
";
$sql2="select nom, prenom
from films_acteurs
INNER JOIN acteurs ON films_acteurs.id_acteur=acteurs.id_acteur
WHERE id_film =".$row["id_film"];
}
Le code fonctionne très bien, mais j'aimerais ajouter un tri de genre (masculin ou féminin). Donc, rajouter une colonne GENRE dans la table ACTEURS, et que ça n'affiche par exemple que les acteurs masculins ou féminin suivant la demande.
J'ai essayé cette requête mais ça n'a pas fonctionné :
$sql2 ="select nom, prenom, genre
from films_acteurs
INNER JOIN acteurs ON films_acteurs.id_acteur=acteurs.id_acteur
WHERE id_film =".$row["id_film"] . "AND WHERE acteurs.genre=masculin";
LeNoyauDur
Messages postés35Date d'inscriptionvendredi 14 septembre 2007StatutMembreDernière intervention25 août 20081 25 août 2008 à 11:21
Comme te le disais nicomilville, il faut un seul WHERE dans la requète après la liste de tes tables et il faut remplacer ton WHERE AND juste par un AND
Donc requete modifiée :
$sql2="select nom, prenom, genre
from films_acteurs
INNER JOIN acteurs ON films_acteurs.id_acteur=acteurs.id_acteur
WHERE id_film =".$row["id_film"] . "AND <strike>WHERE</strike> acteurs.genre='masculin'";
Cordialement
<hr />
I'd rather be insulted by you than someone i respect.
LeNoyauDur
Messages postés35Date d'inscriptionvendredi 14 septembre 2007StatutMembreDernière intervention25 août 20081 25 août 2008 à 10:55
Bonjour,
Pour ton problème de requete il faut juste savoi une chose : les données alphanumériques sous MySql doivent être entourées de '
donc code corrigé :
$sql2="select nom, prenom, genre
from films_acteurs
INNER JOIN acteurs ON films_acteurs.id_acteur=acteurs.id_acteur
WHERE id_film =".$row["id_film"] . "AND WHERE acteurs.genre='masculin'";
Tout simplement
Cordialement
LeNoyauDur
<hr />
I'd rather be insulted by you than someone i respect.
cs_Straw
Messages postés33Date d'inscriptionjeudi 10 mars 2005StatutMembreDernière intervention25 août 2008 25 août 2008 à 11:18
Merci pour ta réponse LeNoyauDur, mais voici l'erreur qu'il m'indique quand je met les ' :
You have an error in your SQL syntax; check the manual that corresponds
to your MySQL server version for the right syntax to use near 'WHERE acteurs.genre='masculin' at line 4
Que faire donc?
Vous n’avez pas trouvé la réponse que vous recherchez ?