Jointure PhpMyAdmin de 3 tables

Fermé
congela Messages postés 23 Date d'inscription samedi 2 juillet 2011 Statut Membre Dernière intervention 11 août 2011 - 2 juil. 2011 à 11:27
congela Messages postés 23 Date d'inscription samedi 2 juillet 2011 Statut Membre Dernière intervention 11 août 2011 - 4 juil. 2011 à 16:16
Bonjour,



j'ai un petit problème technique sur PhpMyAdmin:

j'ai 3 tables: utilisateur, materiel, lien

mes clefs primaires sont: idutilisateur dans utilisateur
et idmateriel dans materiel

mes clefs étrangères sont: idutilisateur dans lien
et idmateriel dans lien

j'ai fait les jointures en innoDB

mais le probleme,

quand je fais la requete
SELECT nomproduit FROM utilisateur, lien, materiel WHERE utilisateur.idutilisateur=1 AND lien.idutilisateur=1


il m'affiche alors tous les produits....

pourtant dans la table lien:
idutilisateur1 => idmateriel=2


le probleme ne viendrait-il pas, du moment où j'insere mes valeurs de idmateriel dans la table lien, il me propose: -1
-2
-3

1-
2-
3-
de même pour idutilisateur où il me fait la même chose.....


help...

2 réponses

Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
4 juil. 2011 à 14:28
Bonjour,

Le problème, c'est que tu n'as pas indiqué dans ta requête sur quel champ se fait la jointure.
Lorsque tu fais une requête sur plusieurs tables, par défaut il en fait le produit cartésien ; il faut alors restreindre les lignes obtenues en disant que la clé étrangère est égale à l'identifiant.

Voici donc (en utilisant la syntaxe JOIN, qui est plus parlante je trouve)

SELECT nomproduit 
FROM utilisateur u
INNER JOIN lien l ON l.idutilisateur = u.idutilisateur
INNER JOIN materiel m ON m.idmateriel = l.idmateriel
WHERE u.idutilisateur = 1


Xavier
0
congela Messages postés 23 Date d'inscription samedi 2 juillet 2011 Statut Membre Dernière intervention 11 août 2011
4 juil. 2011 à 16:16
merci Xavier, ma requête est plus propre maintenant!
0