Bonjour à tous,

Alors voici mon soucis :
Sur cette page, je souhaite afficher le nom des événements présents dans ma base de données, avec la tournée a laquelle ils sont associés :

<a href="http://www.hostingpics.net/viewer.php?id=840697Sanstitre.png"><img src="http://img4.hostingpics.net/thumbs/mini_840697Sanstitre.png" alt="Heberger image" /></a>

Pour cela, dans ma base j'ai créé plusieurs tables, dont une table "evenement" et une table "tournee" que voici :

<a href="http://www.hostingpics.net/viewer.php?id=752511event.png"><img src="http://img4.hostingpics.net/thumbs/mini_752511event.png" alt="Heberger image" /></a>
<a href="http://www.hostingpics.net/viewer.php?id=989582tournee.png"><img src="http://img4.hostingpics.net/thumbs/mini_989582tournee.png" alt="Heberger image" /></a>

Et voici le schéma relationnel :

<a href="http://www.hostingpics.net/viewer.php?id=289894Sanstitre2.png"><img src="http://img4.hostingpics.net/thumbs/mini_289894Sanstitre2.png" alt="Heberger image" /></a>

Avant d'attaquer le code de la récupération et de l'affichage dans mon tableau, j'ai essyé de faire la requete et de la tester directement sur phpmyadmin et je trouve alors une erreur que voici :

<a href="http://www.hostingpics.net/viewer.php?id=429217Sanstitre.png"><img src="http://img4.hostingpics.net/thumbs/mini_429217Sanstitre.png" alt="Heberger image" /></a>

Je suis donc ici pour vous demander si vous voyez ce qui cloche, parce que ça fait un moment que je bloque dessus...
Merci beaucoup à tous d'avance !

5 réponses


Thomas Chicheportiche
Réponse acceptée

Et non :)

Ici tu fais un équivalent de :

SELECT `tournee`.`nom_tournee` FROM `tournee`
SELECT * FROM `evenement` WHERE `evenement`.id_tournee = '2'

Si tu es novices en SQL, je te conseille le tutoriel sur MySQL. Il faut que tu précises que tu veux faire une jointure entre tes deux tables (les lier).

Pour ce faire tu as le choix:

  • INNER JOIN seconde_table ON premiere_table.clé_étrangère = seconde_table.clé_primaire
  • FROM première_table, seconde_table WHERE (premiere_table.clé_étrangère = seconde_table.clé_primaire)

Cependant je t'alertes sur la seconde notation qui peut être lourde pour le moteur.

Blinkers
Réponse acceptée

Hello,

Oui c'est normal, car il te manque la jointure entre la table tournee et la table evenement, tu n'indique aucune rélation entre les 2 tables.

SELECT `tournee`.`nom_tournee` FROM `tournee`, `evenement` WHERE `evenement`.`id_tournee` = 2 AND `evenement`.`id_tournee` = `tournee`.`id_tournee`

Ici on fait correspondre le champ id_tournee de la table evenement au champ id_tournee de la table tournee

Pour une meilleur lecture de tes tables je te conseil de ne pas nommé les champs de la même façon, renomme ton champ id_tournee de la table evenement en tournee_id par exemple, ca sera plus clair ;)

EDIT : Et oui Thomas Chicheportiche à raison, c'est mieux de faire un INNER JOIN niveau perf ;)

Salut,

Tu essaies de récupérer le champ tournée dans une table dont l'alias ou le nom sera nom_tournee
Essaies tournee.nom_tournee

Bonjour et merci thomas, en effet, ça fonctionne mieux...!

Mais maintenant, une fois cette requête éxécutées :

SELECT `tournee`.`nom_tournee` FROM `tournee`, `evenement` WHERE `evenement`.id_tournee = '2'

Il me retourne le nom de toutes les tournées, alors qu'il devrait me renvoyer uniquement le nom de la tournée ayant comme id ne numéro 2 non ?

Ooooooook ! Je comprends ! Merci beaucoup à vous deux :)