Comment créer la jointure entre trois tables sql

habiba -  
 SimonVeille -
Bonjour,
Please,je souhaite manupilé trois tables qui sont(client,commande,produit)et comment je peut faire pour qu'un client effectue une commande tout en sachant qu'il peut commande que les produit et par après recuperé le client qui a fait la commande de tel produit j'en ai vraiment besoin.merci pour la bonne compréhension.
A voir également:

2 réponses

BioK03 Messages postés 655 Date d'inscription   Statut Membre Dernière intervention   134
 
Bonjour,

Votre table commande a surement les champs [IdCommande, IdClient, IdProduit].

Vous pouvez donc dire qu'une commande, c'est un client qui a choisi un produit. Si une commande comporte plusieurs produits, alors il vous manque une table. Sinon, vous pouvez directement insérer une commande :
Pour IdClient = 1 et IdProduit = 1, et IdCommande en AUTO_INCREMENT :
INSERT INTO commande VALUES (NULL, 1, 1);


Pour récupérer toutes les commandes d'un produit, vous pouvez faire :
SELECT * FROM commande c INNER JOIN produit p WHERE p.nom LIKE 'produit1';


Donc vous pouvez faire pour récupérer tous les clients qui ont fais une commande qui comporte le produit faire :
SELECT cl.nom FROM produit p INNER JOIN commande INNER JOIN client cl WHERE p.name LIKE 'produit1';


(je sais qu'il existe d'autres types de jointures, mais je ne connais pas votre utilisation).

Si vous n'avez pas compris quelque chose, n'hésitez pas, je détaillerai plus :)

Cordialement.
0
habiba
 
oui une commande peut comporter plusieurs produits.merci d'avance
0
BioK03 Messages postés 655 Date d'inscription   Statut Membre Dernière intervention   134
 
Donc vous avez plus que 3 tables, car c'est impossible. Vous avez donc une relation *..* entre commande et produit, par quoi est-elle symbolisée dans la base de données ?
0
habiba > BioK03 Messages postés 655 Date d'inscription   Statut Membre Dernière intervention  
 
par leurs id.
0
habiba > BioK03 Messages postés 655 Date d'inscription   Statut Membre Dernière intervention  
 
j'ai utilisé les id comme des indexes
0
BioK03 Messages postés 655 Date d'inscription   Statut Membre Dernière intervention   134
 
oui, comme tout le monde. Comment stockez-vous alors le fait qu'il y ait plusieurs produits par commande ?
0
SimonVeille
 
Salut,

c'est déjà au niveau du principe que vous devez être au clair. Le code SQL c"'est le résultat:

En français on a une table client, produit comment noter les commandes?

Avez une table commande qui retient l'identifiant(qui deviens alors une clé étrangère dans la table commande) du client et du ou des produits commandés.
Toujours avec le cerveau(pas celui de l'ordinateur il est plutôt borné) pour avoir une commande qui retiennent le client et le(s) produits il suffit de les recouper:

Commande indique le client, indique le ou les produits.

Sans une bonne conception pas la peine de chercher les réponses en SQL. Ici c'est plutôt simpliste, on a 3 entités distinctes:


CLIENT 0,n COMMANDE
COMMANDE 1,1 CLIENT
COMMANDE 0,n PRODUIT

Un client peut avoir 0 à 'n'(de 1 à une infinité) de commandes
Une commande a toujours un client(et un seul)
Une commande à 0 à 'n' produits (ici 0 pour être plus souple et autoriser une commande sans produit mais c'est dans l'univers du discours(donc çà voir avec le commanditaire) de déterminer si une commande est obligatoirement composée d'au moins un produit ou peut existe avec aucun produit).
0