Tri sur jonction

[Résolu]
Signaler
Messages postés
33
Date d'inscription
jeudi 10 mars 2005
Statut
Membre
Dernière intervention
25 août 2008
-
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
-
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

Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
35
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 !
Messages postés
35
Date d'inscription
vendredi 14 septembre 2007
Statut
Membre
Dernière intervention
25 août 2008

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.
Messages postés
35
Date d'inscription
vendredi 14 septembre 2007
Statut
Membre
Dernière intervention
25 août 2008

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.
Messages postés
33
Date d'inscription
jeudi 10 mars 2005
Statut
Membre
Dernière intervention
25 août 2008

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?
Messages postés
33
Date d'inscription
jeudi 10 mars 2005
Statut
Membre
Dernière intervention
25 août 2008

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 !
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
35
De rien, heureux d'avoir pu t'aider...

a++

Si la réponse vous convient, pensez : Réponse acceptée !