jointure externe

jojo28
Invité n'ayant pas de compte PHPfrance

20 mai 2014, 23:42

Bonjour, j' ai actuellement 3 tables et voici leur caractéristiques

membre joue instruments
id_membre PK id_membre id_instrument
id_instrument

J' aimerais afficher dans une page lid des instruments correspondant a lid du membre voici ce que j' ai essayer de faire
"SELECT * FROM membre INNER JOIN joue ON id_membre = id_membre INNER JOIN instruments ON id_instrument = id_instrument"

mais ceci ne marche pas merci de votre aide

Mammouth du PHP | 2278 Messages

21 mai 2014, 10:19

J'ai quelque chose du même genre
tables préfixées par kalig:
dico :
id
mot
dico_dictees
id
mot_referent (valeurs gréées en même temps que id de dico)

select * from kalig_dico join kalig_dico_dictees on kalig_dico_dictees.mot_referent = kalig_dico.id;
Ce qui cahnge, c'est Inner join, ou outer join
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

ViPHP
ViPHP | 2577 Messages

21 mai 2014, 10:31

Pour compléter, dans "id_membre = id_membre" il faut indiquer les tables utilisées puisque id_membre est présent dans 2 tables, sinon mysql ne sait pas lequel des 2 prendre. Idem pour l'autre jointure.

Tu dois certainement avoir un message d'erreur si tu fais ta requête dans phpmyadmin. Ca pourrait te donner une piste. Sinon, avec PHP il est possible de connaitre le message avec des fonctions comme mysql_error() (à adapter suivant le jeu de fonctions utilisées (mysql, mysqli ou pdo).

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

21 mai 2014, 10:57

salut,

joj, c'est vraiment pas clair l'info de tes table la.

Mais si tu souhaite savoir de quel instrument joue un membre il suffit de faire un select sur la table "joue" avec en prédicat l'id du membre

pour faciliter la compréhension tu peux fournir un mcd
2014-05-21_105619.png

@+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Il en faut peu pour être heureux ......

jojo28
Invité n'ayant pas de compte PHPfrance

21 mai 2014, 13:03

je ne comprend absolument pas comment je peux faire.
Est ce que si je fais une jointure si deux tables au lieu de deux sa marche ?
Merci de votre aide

jojo28
Invité n'ayant pas de compte PHPfrance

21 mai 2014, 13:14

$reponse = $bdd->query("SELECT * FROM membre INNER JOIN joue ON membre.id_membre = joue.id_membre INNER JOIN instruments ON joue.id_instrument = instruments.id_instrument WHERE username='{$_SESSION['pseudo']}'");

Voici ce que j' ai essayer mais sa ne marche toujours pas

jojo28
Invité n'ayant pas de compte PHPfrance

21 mai 2014, 14:45

C' est bon ma jointure fonctionne

$reponse = $bdd->query("SELECT nom, prenom, date, statut, telephone1, telephone2, adressemail, ville1, codePostal1, Adresse1, ville2, codePostal2, Adresse2, username, password, avatar, nom_instrument FROM membre INNER JOIN joue ON membre.id_membre = joue.id_membre INNER JOIN instruments ON joue.id_instrument = instruments.id_instrument WHERE username='{$_SESSION['pseudo']}'");

Voici le code