Tri sur jonction

Résolu
cs_Straw Messages postés 33 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 25 août 2008 - 25 août 2008 à 09:17
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 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"];
           
            $rs2=mysql_query($sql2) or die (mysql_error());
           
            print "";
            while ($row2=mysql_fetch_assoc($rs2)) {
                print "<li> ".$row2["prenom"]. " " .$row2["nom"]." </li>";
           
            }
            print "";
            print "
";
           
            }
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";

J'ai une erreur de syntaxe que me dit php...

Je ne sais pas quoi faire

Help please

6 réponses

nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
25 août 2008 à 11:13
Salut,

Il reste tout de même une erreur...

Il ne faut pas mettre de deuxième where, un AND suffit...

a++

Si la réponse vous convient, pensez : Réponse acceptée !
3
LeNoyauDur Messages postés 35 Date d'inscription vendredi 14 septembre 2007 Statut Membre Dernière intervention 25 août 2008 1
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.
3
LeNoyauDur Messages postés 35 Date d'inscription vendredi 14 septembre 2007 Statut Membre Dernière intervention 25 août 2008 1
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.
0
cs_Straw Messages postés 33 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 25 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?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Straw Messages postés 33 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 25 août 2008
25 août 2008 à 11:20
J'écrivais ma réponse à NoyauDur pendant ta réponse nicomilville,

Mais maintenant mon problème est résolu

Merci beaucoup ! C'était en effet une bête chose...

Encore merci!

Bonne journée !
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
25 août 2008 à 11:24
De rien, heureux d'avoir pu t'aider...

a++

Si la réponse vous convient, pensez : Réponse acceptée !
0
Rejoignez-nous