Jointure PhpMyAdmin de 3 tables

congela Messages postés 23 Date d'inscription   Statut Membre Dernière intervention   -  
congela Messages postés 23 Date d'inscription   Statut Membre Dernière intervention   -
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 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
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   Statut Membre Dernière intervention  
 
merci Xavier, ma requête est plus propre maintenant!
0