[RESOLU][SQL/ACCESS] Problème jointure

Problème jointure [RESOLU][SQL/ACCESS] - SQL/NoSQL - Programmation

Marsh Posté le 06-04-2010 à 09:57:24    

Bonjour à tous,
 
Je vous explique le problème :  
 
J'ai une table T_EQPT qui possède une liste de moteurs et de modules associés, les modules appartenant à un moteur donné possèdent le meme "equipmentCodeMainFather" que ce moteur. La ou ca se complique, c'est que chaque moteur dans cette liste possède un "EquipmentFLCode" , une clé étrangère qui pointe sur une autre table T_FL, mais seuls les moteurs dans la table T_EQPT ont cette colonne de remplie, pas les modules associés.
Dans T_FL j'ai en fait la liste des moteurs en activité (il y a une colonne Status qui me permet de le savoir à l'intérieur), et une donnée que je dois récupérer (le nombre d'heures de vol annuel) pour affecter cette dernière aux différents modules de ce moteur et faire des calculs.
 
Problème n°1 : je n'arrive pas à avoir la liste des moteurs en activité avec les modules associés, ma requête m'affiche pour le moment que les moteurs et pas les modules (car mon INNER JOIN enlève tous les modules vu qu'ils n'ont pas de EquipmentFLCode...)
 
Problème n°2 : Si je parviens à résoudre le problème 1, comment avoir ma donnée d'heures de vol affichée devant chacun des modules associés au moteur en question.
 
 
Merci d'avance


Message édité par kojiro64 le 06-04-2010 à 15:17:48
Reply

Marsh Posté le 06-04-2010 à 09:57:24   

Reply

Marsh Posté le 06-04-2010 à 11:34:40    

Bon le problème 1 est résolu à l'aide d'un left join, mais je vois toujours pas comment "propager" la donnée disponible heure de vol au niveau des modules d'un moteur.

Reply

Marsh Posté le 06-04-2010 à 14:09:31    

Un petit exemple de ce que je souhaite obtenir :
 
Table tbl_eqpt
 
Type_piece  EquipmentCodeMainFather  EquipmentFLCode
Moteur1       34                               01A
Mod1          34
Mod2          34
Mod3          34
Moteur2       35                               0FF
Mod1          35
Mod2          35
Mod3          35
Moteur 3      36                                F82
...
 
Table T_FL
 
Type pièce     FLCode    HeuresdeVolAnnuelles
Moteur1         01A        500
Moteur2         0FF         400
Moteur3         F82         750
 
 
 
Ma requete finale souhaitée :  
 
Type_piece  EquipmentCodeMainFather  EquipmentFLCode   HeuresDevolAnnuelles
Moteur1       34                               01A                    500
Mod1          34                                                         500
Mod2          34                                                         500
Mod3          34                                                         500  
Moteur2       35                               0FF                     400
Mod1          35                                                         400
Mod2          35                                                         400
Mod3          35                                                         400
Moteur 3      36                                F82                    750
Mod1           36                                                         750

Reply

Marsh Posté le 06-04-2010 à 14:30:14    

Code :
  1. SELECT a.Type_Piece, a.EquipmentCodeMainFather, a.EquipmentFLCode, c.HeuresdeVolAnnuelles
  2. FROM tbl_eqpt a
  3.     JOIN tbl_eqpt b ON a.EquipmentCodeMainFather = b.EquipmentCodeMainFather
  4.     JOIN T_FL c ON c.FLCode = b.EquipmentFLCode


 
Resultat:


Type_Piece  EquipmentCodeMainFather  EquipmentFLCode  HeuresdeVolAnnuelles
Moteur1     34                       01A              500
Mod1        34                       NULL             500
Mod2        34                       NULL             500
Mod3        34                       NULL             500
Moteur2     35                       0FF              400
Mod1        35                       NULL             400
Mod2        35                       NULL             400
Mod3        35                       NULL             400
Moteur3     36                       F82              750
Mod1        36                       NULL             750

Reply

Marsh Posté le 06-04-2010 à 15:17:05    

Merci tu es un dieu (au moins pour cette après-midi :) )

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed