Jointure PhpMyAdmin de 3 tables [Fermé]

Signaler
Messages postés
23
Date d'inscription
samedi 2 juillet 2011
Statut
Membre
Dernière intervention
11 août 2011
-
Messages postés
23
Date d'inscription
samedi 2 juillet 2011
Statut
Membre
Dernière intervention
11 août 2011
-
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

Messages postés
3666
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
8 janvier 2021
980
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
Messages postés
23
Date d'inscription
samedi 2 juillet 2011
Statut
Membre
Dernière intervention
11 août 2011

merci Xavier, ma requête est plus propre maintenant!