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 :

[Oracle] Contenu d'une table en entête de colonne


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2003
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 31
    Points : 15
    Points
    15
    Par défaut [Oracle] Contenu d'une table en entête de colonne
    Bonjour,
    Je travaille sous Oracle. J'ai écrit une requête SQL qui fonctionne mais je souhaiterai modifier l'affichage des résultats.

    Le resultat de ma requête ressemble à ça :

    Référence - Caractéristique - Valeur Caractéristique (= entêtes de colonne)
    produit 1 - poids - 20 kg
    produit 1 - taille - 50 cm
    produit 1 - couleur - bleu

    Je voudrai que cela sorte comme suit :

    Référence - Poids - Taille - Couleur
    Produit 1 - 20 kg - 50 cm - Bleu

    Je sais que c'est possible sans passer par une table temporaire. Alors si quelqu'un est inspiré ... si vous voulez + de détails n'hésitez pas à me le dire.
    Merci d'avance

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 099
    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 099
    Points : 28 405
    Points
    28 405
    Par défaut
    Si la liste des caractéristiques est dynamique, la requête doit être construite de manière dynamique...
    Dans tous les cas, elle sera de cette forme :
    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
    SELECT  c1.reference
        ,   c1.valeur   AS  caractéristique_1
        ,   c2.valeur   AS  caractéristique_2
        ,   c3.valeur   AS  caractéristique_3
    FROM    matable AS  c1
        INNER JOIN
            matable AS  c2
            ON  c1.reference    = c2.reference
        INNER JOIN
            matable AS  c3
            ON  c1.reference    = c3.reference
    WHERE   c1.caracteristique  = 'caractéristique_1'
        AND c2.caracteristique  = 'caractéristique_2'
        AND c3.caracteristique  = 'caractéristique_3'
    ;
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 40
    Points : 43
    Points
    43
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select p.reference, p.poids, t.taille, c.couleur
      from table p, table t, table c
     where t.reference = p.reference
       and c.reference = p.reference;

  4. #4
    Membre à l'essai
    Inscrit en
    Mai 2003
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 31
    Points : 15
    Points
    15
    Par défaut
    Merci pour vos réponses.
    Je n'arrive malheureusement pas à les mettre en pratique car ma requête est composée de clauses UNION la voici :

    select icl.CODEICL, icl.ICL_ANCIENNEREF, compteur.NUMSERIE,cpteurcar.CPTEURCAR_TYPECAR, cpteurcar.CPTEURCAR_VALEUR
    from icl, compteur, cpteurcar,cpteurconnect
    where icl.CODEICL = cpteurconnect.CODECOMPTAGE
    and cpteurconnect.CODECOMPTEUR = compteur.CODECOMPTEUR
    and cpteurcar.CPTEURCAR_COMPTEUR = compteur.CODECOMPTEUR
    and cpteurcar.CPTEURCAR_VALEUR IN ('407402501CA','407402502ES','407402503ES','SL7000VERT')

    UNION

    select icl.CODEICL, icl.ICL_ANCIENNEREF, compteur.NUMSERIE,cpteurcar.CPTEURCAR_TYPECAR "Date Batterie",cpteurcar.CPTEURCAR_VALEUR
    from icl, compteur, cpteurcar,cpteurconnect
    where icl.CODEICL = cpteurconnect.CODECOMPTAGE
    and cpteurconnect.CODECOMPTEUR = compteur.CODECOMPTEUR
    and cpteurcar.CPTEURCAR_COMPTEUR = compteur.CODECOMPTEUR
    and cpteurcar.CPTEURCAR_TYPECAR = 'Datebatterie'
    and cpteurcar.CPTEURCAR_COMPTEUR IN (select cpteurcar.CPTEURCAR_COMPTEUR
    from cpteurcar
    where cpteurcar.CPTEURCAR_VALEUR IN ('407402501CA','407402502ES','407402503ES','SL7000VERT'))

    UNION

    select icl.CODEICL, icl.ICL_ANCIENNEREF, compteur.NUMSERIE,cpteurcar.CPTEURCAR_TYPECAR "Type Prom",cpteurcar.CPTEURCAR_VALEUR
    from icl, compteur, cpteurcar,cpteurconnect
    where icl.CODEICL = cpteurconnect.CODECOMPTAGE
    and cpteurconnect.CODECOMPTEUR = compteur.CODECOMPTEUR
    and cpteurcar.CPTEURCAR_COMPTEUR = compteur.CODECOMPTEUR
    and cpteurcar.CPTEURCAR_TYPECAR = 'Typeprom'
    and cpteurcar.CPTEURCAR_COMPTEUR IN (select cpteurcar.CPTEURCAR_COMPTEUR
    from cpteurcar
    where cpteurcar.CPTEURCAR_VALEUR IN ('407402501CA','407402502ES','407402503ES','SL7000VERT'))

    UNION

    select icl.CODEICL, icl.ICL_ANCIENNEREF, compteur.NUMSERIE,cpteurcar.CPTEURCAR_TYPECAR "Année Prom",cpteurcar.CPTEURCAR_VALEUR
    from icl, compteur, cpteurcar,cpteurconnect
    where icl.CODEICL = cpteurconnect.CODECOMPTAGE
    and cpteurconnect.CODECOMPTEUR = compteur.CODECOMPTEUR
    and cpteurcar.CPTEURCAR_COMPTEUR = compteur.CODECOMPTEUR
    and cpteurcar.CPTEURCAR_TYPECAR = 'Annéeprom'
    and cpteurcar.CPTEURCAR_COMPTEUR IN (select cpteurcar.CPTEURCAR_COMPTEUR
    from cpteurcar
    where cpteurcar.CPTEURCAR_VALEUR IN ('407402501CA','407402502ES','407402503ES','SL7000VERT'))

  5. #5
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 40
    Points : 43
    Points
    43
    Par défaut
    C'est peut-être ça ???
    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
    select icl.CODEICL, icl.ICL_ANCIENNEREF,
           compteur.NUMSERIE,
           Decode(cpteurcar.CPTEURCAR_TYPECAR, 'Datebatterie', cpteurcar.CPTEURCAR_VALEUR, NULL) date_batterie,
           Decode(cpteurcar.CPTEURCAR_TYPECAR, 'Typeprom', cpteurcar.CPTEURCAR_VALEUR, NULL) Typeprom,
           Decode(cpteurcar.CPTEURCAR_TYPECAR, 'Annéeprom', cpteurcar.CPTEURCAR_VALEUR, NULL) Annéeprom
      from icl, compteur, cpteurcar,cpteurconnect
     where icl.CODEICL = cpteurconnect.CODECOMPTAGE
       and cpteurconnect.CODECOMPTEUR = compteur.CODECOMPTEUR
       and cpteurcar.CPTEURCAR_COMPTEUR = compteur.CODECOMPTEUR
       --
       and (cpteurcar.CPTEURCAR_TYPECAR IN ('Datebatterie', 'Typeprom', 'Annéeprom')
            and cpteurcar.CPTEURCAR_COMPTEUR IN (
                select cpteurcar.CPTEURCAR_COMPTEUR
                  from cpteurcar 
                 where cpteurcar.CPTEURCAR_VALEUR IN ('407402501CA','407402502ES','407402503ES','SL7000VERT'))
            )
         or (cpteurcar.CPTEURCAR_VALEUR IN ('407402501CA','407402502ES','407402503ES','SL7000VERT'))

  6. #6
    Membre à l'essai
    Inscrit en
    Mai 2003
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 31
    Points : 15
    Points
    15
    Par défaut
    La dernière solution n'est pas mal c'est presque ça.
    J'ai bien mes 3 colonnes, le problème c'est que j'ai maintenant 1 ligne par valeur exemple :

    Référence - Poids - Taille - Couleur
    Produit 1 - 20 kg
    Produit 1 - - 50 cm
    Produit 1 - - - Bleu

    Vraiment merci pour votre aide

  7. #7
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    vous avez donc toutes les données attendues, le moteur SQL a fait son boulot

    cf l'article Les erreurs les plus fréquentes en SQL
    et en particulier le paragraphe 9. Cosmétique...
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

  8. #8
    Membre à l'essai
    Inscrit en
    Mai 2003
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 31
    Points : 15
    Points
    15
    Par défaut
    J'ai résolu mon problème de mise en page.
    J'ai utilisé la 2nde solution que vous m'avez suggérée.
    J'ai mis les différentes requêtes dans un FROM d'une requête générale.
    Cela fonctionne bien.
    Merci à tous pour votre aide.

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

Discussions similaires

  1. [Oracle] afficher le contenu d'une table oracle avec php
    Par bsidy1 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 09/12/2008, 09h25
  2. Accéder au contenu d'une table imbriquée
    Par scott_tiger dans le forum Oracle
    Réponses: 18
    Dernier message: 22/12/2004, 21h01
  3. comment effacer le contenu d'une table ttable
    Par naw dans le forum Bases de données
    Réponses: 4
    Dernier message: 07/07/2004, 16h13
  4. [MYSQL] Copier contenue d'une table vers...
    Par naseeb18 dans le forum Requêtes
    Réponses: 9
    Dernier message: 04/04/2004, 13h40
  5. Lister le contenu d'une table sans connaitre ses champs
    Par Google.be dans le forum PostgreSQL
    Réponses: 9
    Dernier message: 30/03/2004, 15h23

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