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

Requêtes MySQL Discussion :

Transposition lignes en colonnes [MySQL-5.1]


Sujet :

Requêtes MySQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 15
    Points : 16
    Points
    16
    Par défaut Transposition lignes en colonnes
    Bonjour,

    J'ai une base de données avec des enregistrements en ligne comme ceci :

    ID | VARIABLE | VALEUR
    00001 NOM DURAND
    00001 PRENOM PIERRE
    00001 DOB 21/11/1990
    ...
    00002 NOM DUPONT
    00002 PRENOM JACQUES
    00002 DOB 17/08/2000
    ...

    Je cherche à afficher un résultat de requête comme ceci :
    ID NOM PRENOM DOB
    00001 DURAND PIERRE 21/11/1990
    00002 DUPOND JACQUES 17/08/2000
    ...


    Je parviens à ce que je veux avec des jointures mais les requêtes sont très longues à exécuter car je peux atteindre jusqu'à 20 lignes à transposer en colonnes.

    Avez vous une astuce pour moi

    Merci d'avance

  2. #2
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 381
    Points : 19 065
    Points
    19 065
    Par défaut
    Salut gotque.

    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    --------------
    SET AUTOCOMMIT = 0
    --------------
     
    --------------
    START TRANSACTION
    --------------
     
    --------------
    DROP DATABASE IF EXISTS `base`
    --------------
     
    --------------
    CREATE DATABASE `base`
        DEFAULT CHARACTER SET `latin1`
        DEFAULT COLLATE       `latin1_general_ci`
    --------------
     
    --------------
    DROP TABLE IF EXISTS `test`
    --------------
     
    --------------
    CREATE TABLE `test`
    ( `id`        integer unsigned not null auto_increment,
      `variable`  char(06)         not null,
      `valeur`    varchar(255)     not null,
      primary key (`id`,`variable`)
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    insert into `test` (`id`,`variable`,`valeur`) values
      (1, 'NOM',    'DURAND'),
      (1, 'PRENOM', 'PIERRE'),
      (1, 'DOB',    '21/11/1990'),
     
      (2, 'NOM',    'DUPONT'),
      (2, 'PRENOM', 'JACQUES'),
      (2, 'DOB',    '17/08/2000')
    --------------
     
    --------------
    select * from `test`
    --------------
     
    +----+----------+------------+
    | id | variable | valeur     |
    +----+----------+------------+
    |  1 | DOB      | 21/11/1990 |
    |  1 | NOM      | DURAND     |
    |  1 | PRENOM   | PIERRE     |
    |  2 | DOB      | 17/08/2000 |
    |  2 | NOM      | DUPONT     |
    |  2 | PRENOM   | JACQUES    |
    +----+----------+------------+
    --------------
    select    id,
              max(nom) as nom,
              max(prenom) as prenom,
              max(dob) as dob
     
        from  (  select    id,
                           case variable when 'NOM'    then valeur                                        else '' end as nom,
                           case variable when 'PRENOM' then valeur                                        else '' end as prenom,
                           case variable when 'DOB'    then cast(str_to_date(valeur, '%d/%m/%Y') as date) else '' end as dob
                     from  test
              ) as x
    group by  id
    --------------
     
    +----+--------+---------+------------+
    | id | nom    | prenom  | dob        |
    +----+--------+---------+------------+
    |  1 | DURAND | PIERRE  | 1990-11-21 |
    |  2 | DUPONT | JACQUES | 2000-08-17 |
    +----+--------+---------+------------+
    --------------
    COMMIT
    --------------
     
    --------------
    SET AUTOCOMMIT = 1
    --------------
     
    Appuyez sur une touche pour continuer...
    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 15
    Points : 16
    Points
    16
    Par défaut
    Merci beaucoup pour ton aide, cela fonctionne parfaitement!

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

Discussions similaires

  1. Problème de transposition Ligne Colonne en VBA
    Par Petit_Fou dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/02/2016, 13h49
  2. Transposition d'une colonne en plusieurs lignes
    Par michael1989 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 08/12/2014, 11h49
  3. [11gR2] Transposition lignes / colonnes
    Par tropiko dans le forum Oracle
    Réponses: 2
    Dernier message: 06/02/2014, 15h26
  4. Transposition de lignes en colonnes
    Par mikelangelo74 dans le forum Langage
    Réponses: 1
    Dernier message: 17/10/2007, 18h50
  5. [TSynMemo] Positionnement par ligne et colonne
    Par Mercilius dans le forum Composants VCL
    Réponses: 9
    Dernier message: 16/04/2003, 16h22

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