Requète SELECT avec INNER JOIN sur plusieurs tables et des cles manquantes [Résolu]

Messages postés
34
Date d'inscription
mardi 27 avril 2004
Dernière intervention
22 juin 2011
- - Dernière réponse : bobarman
Messages postés
34
Date d'inscription
mardi 27 avril 2004
Dernière intervention
22 juin 2011
- 17 juin 2011 à 12:17
Bonjour, j'ai 5 tables: Une table Fabrications tout en haut,
3 tables filles reliées à cette table Fabrications : Commandes, Formules, ControlesQualités.
Et une dernière table: Marques fille de Formules

Je voudrais récupérer tout ce qu'il y a dans Fabrication quelques données dans les 4 autres.
MAIS: Dans ma table fabrication IDControlesQualités arrive plus-tard et tant qu'il n'y a pas cette ID, la requête SELECT ne renvoie aucune lignes

je suis une bille en SQL j'ai pris ce que l'assistant me donné sans rien y comprendre et ça ne marche pas.



Clement B
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
Messages postés
34
Date d'inscription
mardi 27 avril 2004
Dernière intervention
22 juin 2011
3
Merci
Ca veux dire que je travail avec les données avant de lui donner une idControleQualité.
Donc je voulais que les données renvoyées soient toutes les lignes de la table Fabrication avec des blancs pour ce qui vient de ControleQualité.

Mais j'ai trouvé la solution grâce à ce cours sur les jointures:
http://sqlpro.developpez.com/cours/sqlaz/jointures/

Donc; puisque les blancs n'étaient que pour ControlesQualités, il fallait transformé le dernier JOIN en:

FROM dbo.TbFabrication INNER JOIN
dbo.TbCommandes ON dbo.TbFabrication.IDCommande = dbo.TbCommandes.IDCommande INNER JOIN
dbo.TbFormules ON dbo.TbFabrication.IDFormule = dbo.TbFormules.IDFormule INNER JOIN
dbo.TbMarques ON dbo.TbFormules.IDMarque = dbo.TbMarques.IDMarque LEFT OUTER JOIN
dbo.TbControlQualité ON dbo.TbFabrication.IDControleQual = dbo.TbControlQualité.IDControlQual


Clement B

Merci bobarman 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de bobarman
Messages postés
34
Date d'inscription
mardi 27 avril 2004
Dernière intervention
22 juin 2011
0
Merci
Je pose ma requête SQL (épuré) au cas ou vous y voyez une abération

SELECT

dbo.TbFabrication.Statut AS [Status Fab], dbo.TbFabrication.[n°lot] AS nlot, dbo.TbFabrication.[Quantité(kg)] AS qttkg, dbo.TbCommandes.[DateD'envoiePrévisionel] AS DateConditionnement, dbo.TbFormules.Genre, dbo.TbFormules.Reference, dbo.TbControlQualité.Tag AS CQTag, dbo.TbMarques.Nom AS Marque

FROM
dbo.TbFabrication INNER JOIN
dbo.TbCommandes ON dbo.TbFabrication.IDCommande = dbo.TbCommandes.IDCommande INNER JOIN
dbo.TbFormules ON dbo.TbFabrication.IDFormule = dbo.TbFormules.IDFormule INNER JOIN
dbo.TbMarques ON dbo.TbFormules.IDMarque = dbo.TbMarques.IDMarque OUTER JOIN
dbo.TbControlQualité ON dbo.TbFabrication.IDControleQual = dbo.TbControlQualité.IDControlQual


J'ai remplacé INNER JOIN par OUTER JOIN sur controle qualité mais ca ne marche pas non plus.

Clement B
Commenter la réponse de bobarman
Messages postés
153
Date d'inscription
lundi 22 mars 2010
Dernière intervention
17 juin 2011
0
Merci
l'id arrive plus tard ? Ça veut dire quoi ?
Commenter la réponse de smathis

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.