Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/05/2011, 10h04   #1
Membre habitué
 
Avatar de mikoukoumi
 
Homme Mikael BOIS
Développeur .net
Inscription : mai 2010
Messages : 134
Détails du profil
Informations personnelles :
Nom : Homme Mikael BOIS
Âge : 22
Localisation : France

Informations professionnelles :
Activité : Développeur .net
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2010
Messages : 134
Points : 132
Points : 132
Par défaut problèmes de syntaxe jointure de 3 tables

Bonjour,

j'ai un problème avec la syntaxe de ma jointure que je voudrais faire sur 3 table différentes(lot , suivi_de_fabrication, melangeur).

lot contient les champs Numero_Commande, Numero_Lot, Nom_Produit, Masse_Lot

suivi_de_fabrication contient les champs Numero_Commande, Numero_Lot, Nom_Operateur, Numero_Melangeur, Etat, Date

melangeur contient les champs Numero_Melangeur
, Produit_Fabrique, Capacite_Max, Ingredient_CS1, Capacite_CS1, Ingredient_CS2, Capacite_CS2, Ingredient_CS3, Capacite_CS3.

je sais que ma classe melangeur n'est pas optimisé mais c'est pour un petit projet pédagogique.

Voici les requêtes que j'ai testé et qui comportent une erreur, j'aimerais avoir une aide ou une piste afin de pouvoir me débloqué.

Code :
1
2
3
4
5
6
SELECT Numero_Melangeur 
INNER JOIN melangeur 
INNER JOIN suivi_de_fabrication 
INNER JOIN lot 
ON lot.Masse_lot <= melangeur.Capacite_Max 
AND lot.Nom_Produit= melangeur.Produit_Fabrique
Code :
1
2
3
4
5
SELECT Numero_Melangeur 
INNER JOIN (melangeur,suivi_de_fabrication) 
INNER JOIN lot
ON lot.Masse_lot <= melangeur.Capacite_Max 
AND lot.Nom_Produit= melangeur.Produit_Fabrique
j'aimerai soit que vous me corrigés mes erreurs soit que vous me donnez un exemple tout simple afin que je comprenne mes fautes de syntaxe.

merci par avance de l'aide que vous allez me fournir.

Cordialment mikoukoumi
__________________
Je ne suis pas un expert mais j'essaye d'apporter mon aide
est ton amis, l'oubli pas...
mon site --->>> http://jcrochefort.fr/ <<<--- une petite visite pour me remercier de mon aide (Toutes remarques fortement appréciées)
mikoukoumi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2011, 10h16   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 007
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 007
Points : 18 278
Points : 18 278
Envoyer un message via MSN à CinePhil
Citation:
melangeur contient les champs Numero_Melangeur
, Produit_Fabrique, Capacite_Max, Ingredient_CS1, Capacite_CS1, Ingredient_CS2, Capacite_CS2, Ingredient_CS3, Capacite_CS3.

je sais que ma classe melangeur n'est pas optimisé mais c'est pour un petit projet pédagogique.
Et bien justement, si c'est pour un projet pédagogique, raison de plus pour faire les choses bien !

Allez hop ! Normalise cette horreur !

Quant aux jointures, bel effort d'utiliser INNER JOIN mais la condition de jointure doit suivre la jointure. Par exemple :
Code :
1
2
3
FROM table1 t1
INNER JOIN table2 t2 ON t2.id_t1 = t1.id
INNER JOIN table3 t3 ON t3.id_t1 = t1.id
Pour bien apprendre à faire des jointures, voir le cours de SQLPro.

Enfin, si tu disais ce qu'est censée faire la requête, on pourrait t'aider plus efficacement.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 27/05/2011, 10h33   #3
Membre habitué
 
Avatar de mikoukoumi
 
Homme Mikael BOIS
Développeur .net
Inscription : mai 2010
Messages : 134
Détails du profil
Informations personnelles :
Nom : Homme Mikael BOIS
Âge : 22
Localisation : France

Informations professionnelles :
Activité : Développeur .net
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2010
Messages : 134
Points : 132
Points : 132
merci pour cette aide ^^

Mon projet pédagogique est a rendre mardi prochain donc c'est la course ^^ environ 120 pages de dossier technique à rendre donc c'est la course

En se qui concerne le but de ma requête elle est assez complexe car ce n'est qu'une partie de celle la.Dans ma requête complète je me sert d'un MINUS

Code :
1
2
3
4
5
6
7
FROM table1 t1
INNER JOIN table2 t2 ON t2.id_t1 = t1.id
INNER JOIN table3 t3 ON t3.id_t1 = t1.id
MINUS
SELECT Numero_Melangeur 
FROM suivi_de_fabrication  
WHERE Etat = 1
je vais voir si cela marche avec votre syntaxe.

merci
Cordialement mikoukoumi
__________________
Je ne suis pas un expert mais j'essaye d'apporter mon aide
est ton amis, l'oubli pas...
mon site --->>> http://jcrochefort.fr/ <<<--- une petite visite pour me remercier de mon aide (Toutes remarques fortement appréciées)
mikoukoumi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2011, 14h04   #4
Membre habitué
 
Avatar de mikoukoumi
 
Homme Mikael BOIS
Développeur .net
Inscription : mai 2010
Messages : 134
Détails du profil
Informations personnelles :
Nom : Homme Mikael BOIS
Âge : 22
Localisation : France

Informations professionnelles :
Activité : Développeur .net
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2010
Messages : 134
Points : 132
Points : 132
Bonjour,

depuis ce matin je me bas avec cette requête malheureusement c'est elle qui gagne constamment .


Je voudrais établir une deuxième condition de jointure entre la table lot et suivi_de_fabrication du genre

Code :
1
2
3
4
5
SELECT Numero_Melangeur 
FROM lot 
INNER JOIN suivi_de_fabrication 
ON suivi_de_fabrication.Numero_Commande= lot.Numero_Commande 
AND suivi_de_fabrication.Numero_Lot= lot.Numero_Lot
mais après le ON je ne sais pas si on peut utiliser 2 conditions grâce a AND

Code :
1
2
3
4
5
6
7
8
SELECT Numero_Melangeur 
FROM lot 
INNER JOIN suivi_de_fabrication 
ON suivi_de_fabrication.Numero_Commande= lot.Numero_Commande 
INNER JOIN suivi_de_fabrication 
ON suivi_de_fabrication.Numero_Lot= lot.Numero_Lot 
INNER JOIN melangeur 
ON melangeur.Numero_Melangeur = suivi_de_fabrication.Numero_Melangeur
merci de m'éclairer
__________________
Je ne suis pas un expert mais j'essaye d'apporter mon aide
est ton amis, l'oubli pas...
mon site --->>> http://jcrochefort.fr/ <<<--- une petite visite pour me remercier de mon aide (Toutes remarques fortement appréciées)
mikoukoumi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2011, 14h56   #5
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 007
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 007
Points : 18 278
Points : 18 278
Envoyer un message via MSN à CinePhil
La première requête est bonne dans la mesure où les deux conditions de jointures portent bien sur les mêmes tables.

Dans la seconde requête, il faudrait mettre un alias aux tables (c'est d'ailleurs recommandé pour faciliter l'écriture et la lecture de toutes les requêtes à plus d'une table) et donc deux alias différents pour les deux instances de la table suivi_de_fabrication mais le résultat serait différent.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h57.


 
 
 
 
Partenaires

Hébergement Web