IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

InterBase Discussion :

Résultat d'un SELECT dans une colonne


Sujet :

InterBase

  1. #1
    Membre à l'essai
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2006
    Messages : 20
    Points : 11
    Points
    11
    Par défaut Résultat d'un SELECT dans une colonne
    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!

  2. #2
    Membre à l'essai
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2006
    Messages : 20
    Points : 11
    Points
    11
    Par défaut
    Bonjour,

    Je tiens à apporter une précision, j'utilise comme environnement de développement DELPHI XE.

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 021
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 021
    Points : 40 935
    Points
    40 935
    Billets dans le blog
    62
    Par défaut
    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?
    certainement , cependant la lecture de ton message est vraiment ardue

    comme piste les JOIN , les CTE (Common Table Expression enfin si elles existent sous Interbase, j'ai laché Interbase pour Firebird depuis des années maintenant)
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  4. #4
    Membre à l'essai
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2006
    Messages : 20
    Points : 11
    Points
    11
    Par défaut
    Merci pour l'info sur CTE, je vais commencer à regarder dans ce coté là, et merci encore pour la rapidité de la réponse.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2006
    Messages : 20
    Points : 11
    Points
    11
    Par défaut
    Bonjour,
    Je voudrais donner la manière dont j'ai résolu mon problème.
    La problématique était "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".
    Pour chaque donnée que je devais afficher sur une même ligne, j'ai créé un TIBQuery (T1, T2,...). Chaque requête liée me permet d'obtenir la ligne de la donnée concernée.
    J'ai également créé un TIBQuery récapitulatif Tg avec une requête générale Rg.
    Dans son éditeur de champ, j'ai créé des champs qui, par des LookupKeyField, ont reliés les T1, T2,... à la requête Rg, et le tour est joué!
    Une TDBGrid liée au Tg et j'affiche mes données en ligne.
    Cette astuce pourra peut-être aider quelqu'un, et si il y a une manière plus simple de résoudre le problème, je suis à l'écoute.

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 021
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 021
    Points : 40 935
    Points
    40 935
    Billets dans le blog
    62
    Par défaut
    je pense que c'est une solution 'lourde' , je suis sur qu'une solution SQL est possible l'avantage évident étant que c'est interbase qui fait le travail de 'base' .
    Il est évident (encore une fois) que la solution SQL est possible au vue de ta méthode

    mais
    Citation Envoyé par déjà dit
    la lecture de ton message est vraiment ardue
    pourrais-tu (si tu veux aller plus loin) présenter tes tables de manière plus lisible ?
    par exemple :
    TABLE1
    CHAMP1
    CHAMP2
    CHAMP3
    TABLE2
    CHAMP21 <->TABLE1(CHAMP1)
    CHAMP22
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. résultat d'un select dans une variable
    Par chloro69 dans le forum Informix
    Réponses: 4
    Dernier message: 14/04/2008, 18h56
  2. Concaténer un SELECT dans une colonne
    Par cactus2078 dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 23/05/2007, 21h12
  3. Réponses: 11
    Dernier message: 18/07/2006, 14h53
  4. récupérer le résultat d'un SELECT dans une variable ?
    Par budhax dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 06/06/2006, 11h24
  5. [Sybase] résultat d'un select dans une variable
    Par stoz dans le forum Sybase
    Réponses: 2
    Dernier message: 14/09/2004, 15h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo