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

SQL Oracle Discussion :

Requeste SQL sur Oracle


Sujet :

SQL Oracle

  1. #1
    Candidat au Club
    Inscrit en
    Octobre 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 2
    Par défaut Requeste SQL sur Oracle
    Bonjour à tous,

    Sur Oracle, j'ai un deux tables :

    Table Object :

    ID_OBJECT|DATE_CREATION|ACCOUNT
    100234|23/04/2008|DE34523
    100235|23/04/2008|DE34524
    100236|23/04/2008|DE34525

    Table Attribute :

    ACCOUNT|ATTRIBUTE_ID|ATTRIBUTE_VALUE
    DE34523|ITEM_1|VALUE_1
    DE34523|ITEM_2|VALUE_2

    DE34524|ITEM_1|VALUE_3
    DE34524|ITEM_2|VALUE_4

    DE34525|ITEM_1|VALUE_5
    DE34525|ITEM_2|VALUE_6


    Je veux afficher les données suivantes à l'aide qu'une requête SQL :

    ID_OBJECT|DATE_CREATION|ACCOUNT|ITEM1_VALUE|ITEM2_VALUE
    100234|23/04/2008|DE34523|VALUE_1|VALUE_2
    100235|23/04/2008|DE34524|VALUE_3|VALUE_4
    100236|23/04/2008|DE34525|VALUE_5|VALUE_6


    Merci beaucoup pour votre aide

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Essayez ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT
        O.ID_OBJECT,
        O.DATE_CREATION,
        O.ACCOUNT,
        case A.ATTRIBUTE_ID when 'ITEM_1' THEN A.ATTRIBUTE_VALUE ELSE '0' END AS ITEM1_VALUE,
        case A.ATTRIBUTE_ID when 'ITEM_2' THEN A.ATTRIBUTE_VALUE ELSE '0' END AS ITEM2_VALUE
    FROM
        Object O INNER JOIN Attribute A
          ON A.ACCOUNT = O.ACCOUNT
    Notez que ça fonctionne pour votre exemple, ici n'est géré qu'une relation (1,1) entre ces deux tables.

  3. #3
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    create table object(ID_OBJECT number primary key,DATE_CREATION date, ACCOUNT varchar2(7));
    insert into object values(100234,to_date('23/04/2008','DD/MM/YYYY'),'DE34523');
    insert into object values(100235,to_date('23/04/2008','DD/MM/YYYY'),'DE34524');
    insert into object values(100236,to_date('23/04/2008','DD/MM/YYYY'),'DE34525');
    create Table Attribute(ACCOUNT varchar2(7),ATTRIBUTE_ID varchar2(12),ATTRIBUTE_VALUE varchar2(16), primary key(account,attribute_id));
    insert into Attribute values('DE34523','ITEM_1','VALUE_1');
    insert into Attribute values('DE34523','ITEM_2','VALUE_2');
    insert into Attribute values('DE34524','ITEM_1','VALUE_3');
    insert into Attribute values('DE34524','ITEM_2','VALUE_4');
    insert into Attribute values('DE34525','ITEM_1','VALUE_5');
    insert into Attribute values('DE34525','ITEM_2','VALUE_6');
    commit;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    select * from object join attribute using (account) 
    pivot (max(ATTRIBUTE_VALUE) for attribute_id in ('ITEM_1','ITEM_2'));
     
    ACCOUNT ID_OBJECT DATE_CREATION 'ITEM_1' 'ITEM_2' 
    ------- --------- ------------- -------- --------
    DE34525    100236 23-APR-08      VALUE_5 VALUE_6 
    DE34524    100235 23-APR-08      VALUE_3 VALUE_4 
    DE34523    100234 23-APR-08      VALUE_1 VALUE_2
    merci de toujours préciser la version !

Discussions similaires

  1. PL/SQL sur Oracle
    Par jelmouss dans le forum Oracle
    Réponses: 2
    Dernier message: 18/08/2014, 11h24
  2. [XL-2007] Requete sql sur oracle
    Par MENOT72 dans le forum Excel
    Réponses: 1
    Dernier message: 09/09/2011, 09h23
  3. Requête SQL sur Oracle
    Par binbinou69 dans le forum Hibernate
    Réponses: 0
    Dernier message: 03/06/2011, 09h22
  4. Batch PL/SQL sur Oracle
    Par JeJerom dans le forum PL/SQL
    Réponses: 5
    Dernier message: 09/10/2007, 15h38

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