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 :

faire l'union de plusieurs colonnes d'une même table


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 7
    Points : 4
    Points
    4
    Par défaut faire l'union de plusieurs colonnes d'une même table
    Bonsoir,
    S'il vous plait, je n'arrive pas a résoudre un problème de requête sql sur access. En fait, j'aimerais faire l'union de plusieurs colonnes d'une table (60 colonnes). Mon problème est que je trouve la requête très longue car j'aimerais utiliser cette requête sur plusieurs autres tables. j'aimerai savoir s'il y a une autre manière de faire cette requête. Merci pour votre pour la réponse

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    select pays, var1, *from table
    union all
    select pays, var2, *from table
    union all
    select pays, var3, *from table
    ....
    union all
    select pays, var45, *from table

  2. #2
    Membre régulier Avatar de Doracle
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2010
    Messages : 60
    Points : 74
    Points
    74
    Par défaut
    Pouvez vous un peu mieux expliquer la finalité de votre requête, la structure et le contenu de la table ?
    Je ne comprends pas votre requête, ni a quoi correspondent vos variables ...

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 7
    Points : 4
    Points
    4
    Par défaut faire l'union de plusieurs colonnes d'une même table
    Merci Doracle pour ton aide. j'aimerai en fait obtenir un fichier plat:

    fichier initiale exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    var1  var2  var3  Var4
    a        b      c     d
    e        f       j     h
    i         g      k    l
    fichier resultat

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var1    var
    a        b
    e        f
    i         g
    a        c
    e        j      
    i         k
    a        d
    e        h
    i         l
    la requête Sql que j'utilise marche bien mais est très longue car ma table est très grande. or j'aimerai faire cette même requête ( que je considèrerais comme une macro) sur plusieurs autres tables. je la trouve donc trop longue car il faudrait chaque fois que je change de table modifier le nom de la table ainsi que ses variables. et je trouve ca vraiment pénible. Merci

  4. #4
    Membre régulier Avatar de Doracle
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2010
    Messages : 60
    Points : 74
    Points
    74
    Par défaut
    D'accord ... vous faites un affichage cumulé d'une première colonne avec toutes les autres tour à tour. Je viens de faire des essais sur ma propre base, j'avoue ne pas trouver d'autres moyens ... Désolé. Mais c'est vrai que ca semble peu optimal ...

    Une solution alternative serait de concaténer les champs. Je ne connais pas la syntaxe pour Access mais elle ne dois pas être si différente de celle que je vous propose :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT var || ' ' || var2, var || ' ' || var3, var || ' ' || var4
    FROM table_name;
    Donc après dans votre fichier plat les données seraient un peu agencées différement, mais je pense que le traitement derrière peut s'adapter facilement, non ?

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Merci Doracle pour ton aide. j'aimerai en fait obtenir un fichier plat:

    fichier initiale exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    code    robe    12    13    14    15    16
    a         bv    34    24    76    23    67
    d         kj    23    32    87    34    89
    s         er    456    21    65    56    67
    fichier resultat

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    code    robe    nombre
    a          bv    12
    d          kj    12
    s          er    12
    a         bv    13
    d          kj    13
    s          er    13
    a         bv    14
    d         kj    14
    s         er    14
    a        bv    15
    d       kj    15
    s       er    15

    la requête Sql que j'utilise marche bien mais est très longue car ma table est très grande. or j'aimerai faire cette même requête ( que je considèrerais comme une macro) sur plusieurs autres tables. je la trouve donc trop longue car il faudrait chaque fois que je change de table modifier le nom de la table ainsi que ses variables. et je trouve ca vraiment pénible. Merci

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 7
    Points : 4
    Points
    4
    Par défaut faire l'union de plusieurs colonnes d'une même table
    Je viens de tester ta requête mais ca ne marche pas . qu'est ce qui signifie les 2 bars "II" que je vois dans le code?

  7. #7
    Membre régulier Avatar de Doracle
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2010
    Messages : 60
    Points : 74
    Points
    74
    Par défaut
    La concaténation de 2 champs, comme je vous disais dans mon précédent message.

  8. #8
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    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 453
    Points : 18 387
    Points
    18 387
    Par défaut
    Oui Doracle mais vous n'êtes toujours pas sur le forum Oracle, même si || fait partie de la norme il me semble.

    Néanmoins le SGBD étant précisé (Access), c'est mieux d'indiquer la fonction qui marche (+ ou concat, je n'en suis pas sûr).

  9. #9
    Membre régulier Avatar de Doracle
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2010
    Messages : 60
    Points : 74
    Points
    74
    Par défaut
    Je sais je lui ai précisé de rechercher lui-même.

    Je ne connaissais pas la syntaxe exacte, même s'il me semble aussi que c'est le +.

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 7
    Points : 4
    Points
    4
    Par défaut faire l'union de plusieurs colonnes d'une même table
    ahh ok. votre requête est une concaténation pourtant moi je veux faire une union pour reduire mes colonnes. voici ce que je veux réellement.

    fichier initial

    code robe 12 13 14 15 16
    a bv 34 24 76 23 67
    d kj 23 32 87 34 89
    s er 456 21 65 56 67
    requête

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT code, robe, 12 as nombre, [12] as indice from feuil1
    union all
    SELECT code, robe, 13, [13] from feuil1
    union all
    SELECT code, robe, 14, [14] from feuil1
    union all
    SELECT code, robe, 15, [15] from feuil1
    resultat

    code robe nombre indice
    a bv 12 34
    d kj 12 23
    s er 12 456
    a bv 13 24
    d kj 13 32
    s er 13 21
    a bv 14 76
    d kj 14 87
    s er 14 65
    a bv 15 23
    d kj 15 34
    s er 15 56
    maintenant je cherche a modifier ma requête pour obtenir un truc plus réduit. car pour une grande table il me faudra ecrire "select....union all" plusieurs fois. j'espere vraiment que cette fois vous me comprendriez

  11. #11
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    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 453
    Points : 18 387
    Points
    18 387
    Par défaut
    Non vous n'avez pas le choix avec Access, vous devez utiliser les union.
    Sur certains SGBD vous pouvez utiliser UNPIVOT, mais pas access.

    Si ce problème survient c'est probablement la résultante d'une mauvaise modélisation.

  12. #12
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 7
    Points : 4
    Points
    4
    Par défaut faire l'union de plusieurs colonnes d'une même table
    Bonjour Waldar,
    aucun problème ne survient lorsque je fais cette requête. car elle marche bien. Mon problème est juste qu'elle est longue. et j'aurai voulu savoir s'il ya un moyen plus court. Regarde, j'ai faite cette requête avec un fichier comportant seulement 7 champs. là c'est facile car j'écris juste 4 ligne de "select....from". or mes tables comportes plus de 60 champs. d'où mon problème. car il faudra écrire "select......from" plus de 40 fois( je l'ai écrire plus de 40 fois et sa marche bien mais c'est vraiment très long) . je me demande aussi si la boucle "FOR...DO" peut m'aider à réduire ma requête. grand Merci pour ton aide

  13. #13
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    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 453
    Points : 18 387
    Points
    18 387
    Par défaut
    Je me suis mal exprimé, par problème j'entendais l'écriture de requête à ralonge !

    Je ne connais pas suffisamment access, peut-être est-il possible d'écrire une requête permettant de générer celle que vous souhaitez exécuter.

  14. #14
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    j'ai chercher a résoudre ce problème sur excel avec les macros et je n'ai pas pu. vous pensez que ça peut être possible de trouver sur excel une macro qui transforme mon fichier comme la requête sql?

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

Discussions similaires

  1. Union de plusieurs colonnes d'une même source
    Par mighty nagty dans le forum Développement de jobs
    Réponses: 1
    Dernier message: 27/03/2015, 16h01
  2. Réponses: 1
    Dernier message: 24/02/2011, 19h11
  3. Count dans plusieurs colonne d'une même table
    Par macfleid dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/07/2008, 20h43
  4. Réponses: 2
    Dernier message: 05/04/2008, 17h33
  5. Update de plusieur colonne d'une meme table
    Par Poisson59 dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 28/09/2006, 09h25

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