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

Langage SQL Discussion :

Croiser un tableau


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Inscrit en
    Décembre 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 7
    Points : 7
    Points
    7
    Par défaut Croiser un tableau
    Bonjour,

    J'ai deux tables:
    - REFUNDS comportant comme colonne RF_AMOUNT_1, RF_AMOUNT_2, ... RF_AMOUNT_50
    - ADDITIONAL COVER comportant un AC_ID et un AC_COLNO.

    J'ai besoin de sélectionner dans la table refunds tous les enregistrements ramené par cette requête (select 'RF_AMOUNT_'||AC_COLNO as AMOUNT from ADDITIONAL_COVERS). En gros, que tous les enregistrements ramené par cette reqûete deviennent des noms de colonne pour une autre sélection dans une autre table.

    Quelque chose du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select (select 'RF_AMOUNT_'||AC_COLNO as AMOUNT 
    from ADDITIONAL_COVERS) from refunds
    where RF_ID= 1044
    (celle-ci ne fonctionne pas).

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 115
    Points : 28 493
    Points
    28 493
    Par défaut
    Je ne ferai aucun commentaire sur la structure désastreuse de ta table. Ce n'est pas nécessaire ; tu en rencontres les limites...

    Ce que tu cherches à faire ne peut l'être que par la construction dynamique de ta requête, soit à partir d'un langage applicatif, soit à l'intérieur d'une procédure stockée, à la condition que ton SGBD prenne en charge l'exécution dynamique de code.

  3. #3
    Futur Membre du Club
    Inscrit en
    Décembre 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 7
    Points : 7
    Points
    7
    Par défaut Réponse structure désastreuse
    Ca je sais bien qu'elle est désastreuse. Je suis développeur et je viens d'arriver dans une nouvelle boite d'info. Je reprends un projet préexistant. Enfin c'est la vie.

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 115
    Points : 28 493
    Points
    28 493
    Par défaut
    Tu peux commencer par créer une vue pour "normaliser" ta table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    CREATE VIEW refunds_vue
        (   rf_id
        ,   rf_colno
        ,   rf_amount
        ) 
    AS  (   SELECT  rf_id
                ,   1   AS rf_colno
                ,   rf_amount_1 AS  rf_amount
            FROM    refunds
        UNION 
            SELECT  rf_id
                ,   2   AS rf_colno
                ,   rf_amount_2 AS  rf_amount
            FROM    refunds
        UNION
            ...
        )
    Ainsi cela devient plus facile pour faire ce que tu recherches...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT  rf.rf_id
        ,   rf.rf_amount
    FROM    refunds_vue     AS rf
        INNER JOIN
            additional_covers   AS ac
            ON  rf.rf_colno = ac.ac_colno
            AND rf.rf_id    = ac.ac_id

Discussions similaires

  1. [2008] Tableau pour croiser des données dans une table
    Par Baquardie dans le forum Développement
    Réponses: 2
    Dernier message: 27/01/2015, 16h07
  2. Croiser un tableau
    Par goute dans le forum QlikView
    Réponses: 5
    Dernier message: 16/11/2011, 12h27
  3. [ASP.NET/C#] Croiser deux listes dans un tableau
    Par Vinceee38 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 25/09/2011, 22h12
  4. transmision de tableau en parametre
    Par Horus dans le forum C++Builder
    Réponses: 3
    Dernier message: 16/05/2002, 12h15
  5. Réponses: 4
    Dernier message: 13/05/2002, 17h43

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