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 :

Insertion à deux dimensions


Sujet :

SQL Oracle

  1. #1
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2018
    Messages : 454
    Par défaut Insertion à deux dimensions
    Bonjour mes amis;

    j'ai une table contenant 4 colonne et 1 seule ligne

    table_date (date1,date2,date3,date4)

    j'ai une autre table (table_resultat) contenant les même colonnes, et 5 lignes (fixes)

    j'ai besoins de faire 5 ( et non pas 20 ) requêtes et insèrer le résultat dans table_resultat comme suit :

    resultat(requete[i]) pour date 1 (je dois avoir 5 lignes ici)
    resultat(requete[i]) pour date 2 (je dois avoir 5 lignes ici)
    resultat(requete[i]) pour date 3 (je dois avoir 5 lignes ici)
    resultat(requete[i]) pour date 4 (je dois avoir 5 lignes ici)

    merci pour vos habituelles collaborations.

  2. #2
    Membre éprouvé
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Par défaut
    Salut,

    Est-ce que cette question est en relation avec ton autre sujet "Insertion en pivot (colonnes en lignes)"?
    Je ne suis pas sur de tout piger, parce que d'un côté du dit que tu as une table "table_resultat" avec 5 lignes fixes, mais d'un autre côté tu dis que pour chaque date tu as 5 lignes de résultat.
    Mais sinon, si tu es dans un contexte "PL/SQL" et que comme dans l'autre sujet tu fais du dynamique SQL, alors l'idée qui me viendrait est d'utiliser une collection (basée sur un type a 4 colonnes, ou 5 si tu as besoin d'un identifiant pour la date en question, par exemple).
    Tu stockes les résultats pour chaque dates dans cette collection, et puis à la fin tu utilises cette collection pour faire ton insert dans la "table_resultat".

    Mais je dois peut être passer à côté de qqchose ..

    @+

  3. #3
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2018
    Messages : 454
    Par défaut
    merci pour ton retour,
    pour cette partie je l'ai résolue en utilisant un curseur, ça marche à merveille
    Mon problème maintenant est comment insérer les lignes obtenues dans une autre table mais horizontalement !!

    exemple :

    lignes obtenues :
    100 200
    250 123
    365 147
    851 145

    insertion :
    100 250 365 851
    200 123 147 145

    merci par avance

  4. #4
    Membre éprouvé
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Par défaut
    Salut,

    Si ton nombre de lignes et de colonnes est fixe, comme tu l'indique (si je ne me trompe pas), on peut tenter via une clause MODEL.
    Exemple vite fait:
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    --
    -- MY_TAB_3_COLS  (Table) 
    --
    CREATE TABLE MY_TAB_3_COLS
    (
      ROW_IND  INTEGER,
      COL_1    NUMBER,
      COL_2    NUMBER
    );
     
    Insert into MY_TAB_3_COLS
       (ROW_IND, COL_1, COL_2)
     Values
       (1, 100, 200);
    Insert into MY_TAB_3_COLS
       (ROW_IND, COL_1, COL_2)
     Values
       (2, 250, 123);
    Insert into MY_TAB_3_COLS
       (ROW_IND, COL_1, COL_2)
     Values
       (3, 365, 147);
    Insert into MY_TAB_3_COLS
       (ROW_IND, COL_1, COL_2)
     Values
       (4, 851, 145);
    COMMIT;
     
     
    --
     
    SELECT new_col_1
         , new_col_2
         , new_col_3
         , new_col_4
      FROM MY_TAB_3_COLS
    MODEL RETURN UPDATED ROWS
       DIMENSION BY (row_ind)
       MEASURES (col_1, col_2, 0 new_col_1, 0 new_col_2, 0 new_col_3, 0 new_col_4)
       RULES
          (new_col_1 [0] = col_1[1],
          new_col_2 [0] = col_1[2],
          new_col_3 [0] = col_1[3],
          new_col_4 [0] = col_1[4],
          new_col_1 [1] = col_2[1],
          new_col_2 [1] = col_2[2],
          new_col_3 [1] = col_2[3],
          new_col_4 [1] = col_2[4])
    Il y a peut être mieux, je ne sais pas pour le moment ...
    @+

  5. #5
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2018
    Messages : 454
    Par défaut
    merci infiniment pour ton retour, mais je trouve que c'est un peu compliqué, vu que j'ai 19 ligne dans la table ou je vais insérer,

    je vais illustrer par exemple :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    TABLE_1 :
    ---------------COL1---------COL2--------COL3-----..........COL19
    Novembre_2017  10243,38     325,28     1039,76
    Janvier_2018   12373,5      551,37     1267,51
    Octobre_2018   12187,02     978,06     1578,42
    Novembre_2018  11570,55     1015,76    1540,04
    l'insertion se fera sur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    TABLE_2
    ----------VAL1---------VAL2-----------------------VAL3---------VAL4
    COL_1   10243,38	12373,5			12187,02	11570,55
    COL_2	325,28		551,37			978,06		1015,76
    COL_3	1039,76		1267,51			1578,42	        1540,04
    COL_4
    .
    .
    .
    .
    .
    COL_19
    j'espere que c'est clair mnt?

  6. #6
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2018
    Messages : 454
    Par défaut
    après plusieurs recherches, j'ai réalisé :


    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
    create or replace view MA_VUE as
    select "Y","LIBELLE","VALEUR"
       from table_date  A
     
     unpivot
     (
       Valeur
         for Libelle in (
     
    date1       as 'Libelle date',
    date2       as 'Valeur date' ,
    date3       as 'Valeur date' ,
    date4       as 'Valeur date' ,
    )
    )
    where ...;
    sachant que j'ai inséré dans la table table_date en utilisant un curseur qui retourne 4 valeur

    Je tiens à remercier Sunchaser par la fin

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

Discussions similaires

  1. Insertion image dans tableau à deux dimensions
    Par l'unique dans le forum Débuter
    Réponses: 16
    Dernier message: 24/09/2010, 20h49
  2. Réponses: 19
    Dernier message: 12/09/2007, 15h34
  3. Réponses: 13
    Dernier message: 13/10/2005, 16h03
  4. tri alphabétique dans un tableau deux dimensions
    Par *!!cocco!!* dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 06/12/2004, 21h38
  5. Passage d'un tableau à deux dimensions
    Par karl3i dans le forum C
    Réponses: 3
    Dernier message: 20/10/2003, 14h50

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