Bonjour,
Je suis relativement nouveau dans l'utilisation des bases de données (INTERBASE) et je suis confronté à un problème que je n'arrive pas à résoudre.
1) Dans un premier temps, je vous expose la structure de la base:
1-1) A partir des données du client (base ACCESS utilisée pour gérer des opérations d'usinage, des contrôles,... sur des jeux de pièces, au cours de campagnes d'usinage), j'ai importé 8 tables sous INTERBASE dont 2 nous intéressent:
- table PSA_Piece (Clef prim.: PSA_NUMPIECEINTERNE, autre champ PJA_NUMJEU, ...). ->A partir d'un SELECT, je peux obtenir la liste des pièces du jeu NUMJEU ->pas de pb.
- table SVP_VieDePiece (PSA_NUMPIECEINTERNE et SVJ_NUMCAMPAGNE forment la clef primaire, autre champ ...). -> A partir d'un INNER JOIN sur les 2 tables et d'un SELECT, Je peux obtenir la liste des pièces au cours d'une campagne d'usinage et d'obtenir le jeu lié impliqué ->pas de pb.
1-2) J'ai eu a créer (Ici, nouveau développement de ma part, uniquement sous INTERBASE) la possibilité de mémoriser des opérations liées à chaque pièce au cours d'une campagne d'usinage.
Pour cela j'ai créé:
1-2-1) une table d'opérations (noté encore "évènements") EV_PALPRECTIFDENTS avec comme clef primaire IX_EVENT. J'ai également mis à l'intérieur les deux champ PSA_NUMPIECEINTERNE et SVJ_NUMCAMPAGNE. Ces derniers me permettent de faire la relation avec la table du client SVP_VieDePiece.
Il y a un champ IX_NOMOPE qui permet de référencer le type d'opération lié et de nombreux autres champs qui sont remplis pour certain en fonction du type d'opération.
1-2-2) J'ai créé une table GESTION_NOMOPE qui permet de gérer les types d'opérations déclarées (Clef prim. IX_NOMOPE, autre champ NONOMOPE, ...).
1-3) Fonctionnement:
Ainsi structurée, dans un SELECT avec des INNER JOIN sur les 4 tables, j'arrive a obtenir toutes les opérations (et leurs type) de toutes les pièces de chaque jeu pour une campagne donnée ->pas de pb.
2) La problématique:
Mon client me demande d'obtenir un écran qui permette d'afficher à l'aide d'une ligne par pièce, des données liées à la pièce (ex: angle d'affûtage pris dans la table PSA_Piece) et d'autres liées à une opération de type 730 pris dans la table EV_PALPRECTIFDENTS, et d'autres liées à une opération de type 740, toujours pris dans la table EV_PALPRECTIFDENTS.
730 et 740 (exemples) sont des valeurs déclarées dans la table GESTION_NOMOPE, dans le champ NONOMOPE.
La liaison entre les tables GESTION_NOMOPE et EV_PALPRECTIFDENTS se fait via IX_NOMOPE.
Noter que le champ EV_PALPRECTIFDENTS.IX_NOMOPE n'est jamais NULL.
Les champs de EV_PALPRECTIFDENTS à afficher en correlation avec GESTION_NOMOPE.NONOMOPE égal une certaine valeur (Ex: 730 ou 740) sont définis codés en dur.
La question: Comment peut-on afficher sur une même ligne, dans des colonnes différentes, des données issues d'une même table, mais situées sur des lignes différentes?
->Reccréer une table à partir de requêtes?
->Utiliser GROUP BY sur les évènements pièce par pièce?
Merci d'avance. Je suis preneur de tout aide à ce sujet!
Partager