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

PostgreSQL Discussion :

Afficher une liste de nombres


Sujet :

PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Gestionnaire de données
    Inscrit en
    Mars 2006
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestionnaire de données
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 356
    Par défaut Afficher une liste de nombres
    Bonjour ,

    On m' a donné une liste de nombres .
    exemple :
    10
    50
    100
    200
    ...
    742


    Je dois créer autant d’enregistrements dans une table qu'il y a de nombres.
    Je pourrais faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    INSERT INTO ma_table (champ1 , nombre )
    SELECT 'toto' , 10 ;
    INSERT INTO ma_table (champ1 , nombre )
    SELECT 'toto' , 50 ;
    ...
    INSERT INTO ma_table (champ1 , nombre )
    SELECT 'toto' , 50 ;
    Y a-t-il une astuce pour faire cela avec 1 seul insert , donc 1 seul select ?

    Je pourrais peut-être transformer (avec vi ) ma liste verticale en liste sous la forme (10,50,100,200,...742) ( ça je sais le faire )

    En fait si j'arrive à faire un select à partir de (10,50,100,200,...742) qui m'afficherait :
    10
    50
    100
    200
    ...
    742, ce serait gagné .

    (L'idée était aussi de ne pas passer par une table intermédiaire créée à partir d'un copy )

    Merci d'avance

  2. #2
    Membre éclairé
    Profil pro
    Gestionnaire de données
    Inscrit en
    Mars 2006
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestionnaire de données
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 356
    Par défaut
    En surfant j'ai trouvé ceci , la fonction unnest() (à partir de postgres 8.4)

    (merci à http://code18.blogspot.com/2009/12/s...stgres-84.html )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT unnest(ARRAY[10, 50, 100 , ... , 742])
    donne :
    10
    50
    100
    ...
    742

    Avant 8.4 , le site cité plus haut donne le code pour créer l'équivalent de la fonction unnest

  3. #3
    Membre éclairé
    Profil pro
    Gestionnaire de données
    Inscrit en
    Mars 2006
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestionnaire de données
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 356
    Par défaut
    J'ai aussi trouvé cela pour avant postgres 8.4 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT myarray[i] as element
     FROM  (SELECT ARRAY[10,50,100, ...742] As myarray) as foo
      CROSS JOIN generate_series(1, 55) As i ;
    En mettant bien le nb d'item (ici 55) dans le generate_series .

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Par défaut
    Autre solution: la clause VALUES. Exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select * from (values (5),(6),(7)) list;
     column1 
    ---------
           5
           6
           7
    (3 rows)
    On peut aussi nommer la ou les colonnes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    select * from (values (3),(6),(12)) as list(j);
     j  
    ----
      3
      6
     12
    (3 rows)

  5. #5
    Membre éclairé
    Profil pro
    Gestionnaire de données
    Inscrit en
    Mars 2006
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestionnaire de données
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 356
    Par défaut
    Merci pour cette info.

    Pour compléter : la dernière méthode fonctionne à partir de la version 8.2

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 11/04/2006, 21h41
  2. [VB]Afficher une liste dans une boite de dialogue
    Par Asdorve dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 05/04/2006, 11h30
  3. [PHP-JS] Afficher une liste sur la page ?
    Par bzoler dans le forum Langage
    Réponses: 7
    Dernier message: 27/01/2006, 09h41
  4. [VB]Ja'imerais afficher une liste d'éléments...
    Par STRUFIELD dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 23/01/2006, 18h49
  5. [c#] Trier une liste de nombres liés.
    Par Joad dans le forum ASP.NET
    Réponses: 13
    Dernier message: 11/05/2005, 11h17

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