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

Signaler
Messages postés
29
Date d'inscription
mardi 27 avril 2004
Statut
Membre
Dernière intervention
22 juin 2011
-
Messages postés
29
Date d'inscription
mardi 27 avril 2004
Statut
Membre
Dernière intervention
22 juin 2011
-
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

3 réponses

Messages postés
29
Date d'inscription
mardi 27 avril 2004
Statut
Membre
Dernière intervention
22 juin 2011
1
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
Messages postés
29
Date d'inscription
mardi 27 avril 2004
Statut
Membre
Dernière intervention
22 juin 2011
1
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
Messages postés
153
Date d'inscription
lundi 22 mars 2010
Statut
Membre
Dernière intervention
17 juin 2011
3
l'id arrive plus tard ? Ça veut dire quoi ?