Version complète: sur le forum Webmaster Hub : Requête sur 2 tables
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > SQL
patricia.b
Bonjour,

Je suis plus que débutante en ce qui concerne le SQL, et, en général, j'essaie de me débrouiller seule ou en parcourant des forums pour trouver la solution à mes problèmes, mais là, je n'ai pas trouvé comment faire une requête qui, pourtant, doit être très courante... (si la réponse existe sur ce forum, d'avance toutes mes excuses, c'est que j'aurai mal cherché...)

D'une part, j'ai deux tables :

1) fournisseurs avec : id (autoincrémenté), nom, adresse, etc.
2 ) produits avec : id (autoincrémenté), nom, chemin_image, description, prix, stock, id_fournisseur

D'autre part, j'ai une page php sur laquelle tous les produits contenus dans la table "produits" sont listés : nom, image - tous fournisseurs confondus - avec, pour chaque produit, un bouton "détail". Cliquer sur l'un des boutons "détail" amène à la page... "detail.php" qui affiche le nom, l'image, la description et le prix du produit sélectionné dans la page précédente. Là, je n'ai pas de problème pour faire la requête permettant de les récupérer puis de les afficher.

CODE
$query = mysql_query("SELECT * FROM produits WHERE id='$id'");
$row = mysql_fetch_row($query);

Cependant, je voudrais ajouter à chaque produit le nom du fournisseur correspondant, mais il me faut aller chercher son nom sur la table "fournisseurs", si je ne veux pas me retrouver avec son n° id, et je ne sais pas comment écrire ma requête.

Merci d'avance pour votre aide...
xpatval
Cela dépend de plusieurs choses...

Un produit peut-il être distribué par plusieurs fournisseurs ?
L'id de la table fournisseurs se nomme id ou id_fournisseur ?

xpatval
KnockedMaster
Salut,

Cela dépend effectivement de plusieurs choses, mais tu peux toujours essayer un truc du genre si un produit ne provient que d'un fournisseur :

CODE
$query = mysql_query("SELECT fournisseurs.nom, produits.id, produits.nom, produits.chemin_image, produits.prix, produits.stock FROM fournisseurs, produits WHERE produits.id_fournisseur= fournisseurs.id AND produits.id='$id'");
$row = mysql_fetch_row($query);


Un peu à l'arrache mais ça devrait fonctionner tongue.gif
patricia.b
Merci de votre réactivité. a_thumbsup_20.gif

Pour répondre aux questions :

- un même produit peut être distribué par plusieurs fournisseurs
- pour l'id de la table fournisseur, je viens de le changer (pour ne pas me mélanger avec les différents id). Je l'ai donc appelé frsid. Ce qui fait que mes tables, maintenant, sont ainsi :

1) fournisseurs avec : frsid (autoincrémenté), nom, adresse, etc.
2 ) produits avec : id (autoincrémenté), nom, chemin_image, description, prix, stock, frsid


xpatval
Un fournisseur peut-il distribuer plusieurs produits ?

Si oui, il te faut une table de jointure...
patricia.b
Oui, un fournisseur distribue plusieurs produits...

Une table de jointure, j'ai jamais fait (je suis vraiment très, mais très débutante wink.gif ) mais je vais apprendre...

En attendant, je vais utiliser la requête que m'a soumis KnockedMaster, et qui fonctionne très bien. Grand merci... et lorsque j'aurais un même produit distribué par plusieurs fournisseurs, je le rentrerai comme un produit unique associé au fournisseur (je ne sais pas si je suis très explicite, là...). Cela gonflera un peu ma BDD, mais je ne pense pas avoir beaucoup de produits identiques distribués par plusieurs fournisseurs, tout au moins dans l'immédiat.

Encore une fois merci pour vos réponses.
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.