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

MySQL Discussion :

Requête multicolonne style excel


Sujet :

MySQL

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Avril 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Avril 2015
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Requête multicolonne style excel
    * Bonjour, *

    Help je craque !
    J'ai deux tables :

    Code sql : 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
    -- Structure de la table `Bureau`
     
    CREATE TABLE IF NOT EXISTS `Bureau` (
      `ID` int(5) NOT NULL AUTO_INCREMENT,
      `Nom` text COLLATE utf8_roman_ci NOT NULL,
      `Prenom` text COLLATE utf8_roman_ci NOT NULL,
      `Fonct` text COLLATE utf8_roman_ci NOT NULL,
      PRIMARY KEY (`ID`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_roman_ci COMMENT='Membres bureau' AUTO_INCREMENT=8 ;
     
    -- Contenu de la table `Bureau`
     
    INSERT INTO `Bureau` (`ID`, `Nom`, `Prenom`, `Fonct`) VALUES
    (1, 'Perroquin', 'Michelle', 'Présidente'),
    (2, 'Daniel', 'Michelle', 'Trésorière'),
    (3, 'Retsinias', 'Patricia', 'Secrétaire'),
    (4, 'Daniel', 'François', 'Membre'),
    (5, 'Gole', 'Martine', 'Membre'),
    (6, 'Spasaro', 'Isidore', 'Membre');

    Code sql : 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
    -- Structure de la table `Absence`
     
    CREATE TABLE IF NOT EXISTS `Absence` (
      `ID` int(11) NOT NULL AUTO_INCREMENT,
      `Num` int(11) NOT NULL,
      `Mois` text COLLATE utf8_roman_ci NOT NULL,
      `Date` text COLLATE utf8_roman_ci NOT NULL,
      PRIMARY KEY (`ID`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_roman_ci AUTO_INCREMENT=6 ;
     
    -- Contenu de la table `Absence`
     
    INSERT INTO `Absence` (`ID`, `Num`, `Mois`, `Date`) VALUES
    (1, 1, '2015-02', 'du 6 au 19'),
    (2, 1, '2015-03', 'du 6 au 19'),
    (3, 3, '2015-02', 'du 15 au 22'),
    (4, 1, '2015-03', 'du 29 au 31'),
    (5, 3, '2015-03', 'du 1 au 8');

    Num.Absence=ID.Bureau

    Avec ces deux tables, je souhaiterais obtenir le tableau suivant*:
    Prénom...│....Nom....│.2015-02..│......2015—03.......│2015-04 │etc...
    Michelle..│.Perroquin.│..6 au 10.│.6 au 19 29 au 31.│.............│.............│
    Michelle..│...Daniel...│.............│.........................│.............│.............│
    Patricia...│.Retsinias.│.15 au 22.│........1 et 8........│ .............│.............│
    François..│..Daniel...│..............│........................│.............│.............│
    Martine...│...Gole... │..............│........................│.............│.............│
    Isidore...│.Spasaro..│...............│........................│.............│.............│

    Je pense que cela doit être possible avec la fonction GOUP_CONCAT(IF

    Qui peut m'aider ?

    * Merci *

  2. #2
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Avril 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Avril 2015
    Messages : 2
    Points : 1
    Points
    1
    Par défaut J'ai trouvé une solution, mais...
    Code sql : 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
    SELECT  
         `Bureau`.`Nom` ,`Bureau`.`Prenom` AS Prénom ,
             GROUP_CONCAT(IF(`Mois`="2015-02", `Date`, "")) AS "Février 2015",
             GROUP_CONCAT(IF(`Mois`="2015-03", `Date`, "")) AS "Mars 2015",
            GROUP_CONCAT(IF(`Mois`="2015-04", `Date`, "")) AS "Avril 2015",
        GROUP_CONCAT(IF(`Mois`="2015-05", `Date`, "")) AS "Mai 2015",
        GROUP_CONCAT(IF(`Mois`="2015-06", `Date`, "")) AS "Juin 2015",
        GROUP_CONCAT(IF(`Mois`="2015-07", `Date`, "")) AS "Juillet 2015",
        GROUP_CONCAT(IF(`Mois`="2015-08", `Date`, "")) AS "Août 2015"
     
    FROM 
            `Absence`
    RIGHT JOIN `Bureau` ON `Absence`.`Num` = `Bureau`.`ID` 
    GROUP BY
            `Bureau`.`ID` 
    ORDER BY `Bureau`.`ID` ASC;


    Je cherche une boucle pour remplacer les lignes GROUP CONCAT .... et les rendre dynamiques
    du style :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CONCAT(
            'GROUP_CONCAT(IF(Mois = "',
            Date ,
            '", "")) AS ',
            Mois
    )
    Mais là ..... ????? J'attends votre aide....

  3. #3
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 793
    Points : 34 024
    Points
    34 024
    Billets dans le blog
    14
    Par défaut
    Ce que vous cherchez à faire est de la cosmétique. Ce n'est pas le boulot du SGBD mais celui de l'application qui présente les données.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

Discussions similaires

  1. Requête sur fichier EXCEL
    Par christian51 dans le forum HyperFileSQL
    Réponses: 1
    Dernier message: 11/04/2007, 20h08
  2. Réponses: 4
    Dernier message: 25/09/2006, 14h53
  3. EXporter une requête Access dans Excel
    Par hellbilly dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 23/07/2006, 16h51
  4. Automation d'une requête paramétrée sur excel
    Par kryssy dans le forum Access
    Réponses: 5
    Dernier message: 28/04/2006, 19h01

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