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 :

Grouper résultats ensemble


Sujet :

Langage SQL

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Points : 193
    Points
    193
    Par défaut Grouper résultats ensemble
    BOnjour.

    Voici la structure de ma table pointage.

    id_pointage
    id_utilisateur
    id_projet
    date
    jour
    nb_heures
    nature
    nom_projet
    ligne
    commentaire
    validite

    Je voudrais pouvoir faire des bilans ou je vois le détail des natures travaillées par projet.

    SI je fait ma requete comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT *
    FROM   `POINTAGE`
    WHERE  `ID_UTILISATEUR` LIKE '$bilan_personne'
           AND `NOM_PROJET` LIKE '$bilan_projet'
           AND (`DATE` BETWEEN '$bilan_du'
                               AND '$bilan_au')
           AND `NATURE` LIKE '$bilan_nature'
    On voit bien tout ce qu'il faut sauf que chaque projet redondant s'affiche.

    Si je fait un GROUP BY nom_projet tout les projets s'affichent mais dans ce cas on voit plus qu'une seule nature par projet alors qu'il peux y en avoir plusieurs.

    COmment s'y prendre?

    Cordialement

  2. #2
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 737
    Points
    11 737
    Par défaut
    si tu as au maximum deux natures par projet, tu les récupères avec MIN(nature) et MAX(nature). Sinon,
    il n'y a pas de solution générique. Quel est ton SGBD ?

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Points : 1 578
    Points
    1 578
    Par défaut Group by amélioré
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ... GROUP BY nom_projet, nature
    ça nous donne quoi ?

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Points : 193
    Points
    193
    Par défaut
    J'utilise MYSQL (tests sous easyphp 1.8 la)

    GROUP BY nom_projet, nature
    Ca permet bien de tout récupérer mais du coup nom_projet n'est plus groupé mais affiché plusieurs fois pour les natures différentes....

    Genre CP -> nature1
    CP -> nature2

    sniff

  5. #5
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 737
    Points
    11 737
    Par défaut
    MySQL est le plus pratique pour ce genre de truc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT NOM_PROJET, GROUP_CONCAT(NATURE) AS ListeNatures
    FROM `POINTAGE` 
    WHERE `ID_UTILISATEUR` LIKE '$bilan_personne'  AND `NOM_PROJET` LIKE '$bilan_projet'  AND (`DATE` BETWEEN '$bilan_du'  AND '$bilan_au')  AND `NATURE` LIKE '$bilan_nature'
    GROUP BY NOM_PROJET
    Je te renvoie à la doc MySQL pour les options DISTINCT, SEPARATOR et ORDER BY de la fonction GROUP_CONCAT.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Points : 193
    Points
    193
    Par défaut
    Merci pour ces tuyaux.

    Maintenant un autre problème se pose, en effet je dois traiter trois paramètres.

    Imaginons cette requete
    SELECT * , SUM( nb_heures ) AS nb_heures
    FROM `pointage`
    WHERE `id_utilisateur` LIKE '%'
    AND `nom_projet` = 'D895'
    AND (
    `date`
    BETWEEN '2006-01-01'
    AND '2006-12-31'
    )
    AND `nature` = 'CP'
    GROUP BY 'id_utilisateur', 'nature'
    LIMIT 0 , 30

    id_pointage
    id_utilisateur
    id_projet
    date
    jour
    nb_heures
    nature
    nom_projet
    ligne
    commentaire
    validite
    nb_heures

    885 1 6 2006-12-08 vendredi 1.5 CP D895 29 4.5
    883 2 6 2006-12-06 mercredi 1.5 CP D895 27 3

    (commentaires et validité sont vides)

    Cependant on obtient donc deux lignes de résultats.
    Avec deux fois la même nature mais pour deux utilisateurs différents.
    J'aimerai pouvoir l'afficher comme ceci
    Projet Nature Utilisateur Heures
    TOTAL 20
    D500 20
    CP 10
    UTIL1 6
    UTIL2 4


    et non afficher deux fois la même nature avec pour chacune d'elle un utilisateur différent.
    Et je ne m'en sort pas

  7. #7
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 737
    Points
    11 737
    Par défaut
    Citation Envoyé par masseur
    teurs différents.
    J'aimerai pouvoir l'afficher comme ceci
    Projet Nature Utilisateur Heures
    TOTAL 20
    D500 20
    CP 10
    UTIL1 6
    UTIL2 4


    et non afficher deux fois la même nature avec pour chacune d'elle un utilisateur différent.
    Et je ne m'en sort pas
    Je ne comprends pas quel affichage tu veux...

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Points : 193
    Points
    193
    Par défaut
    COmme le premier tableau du fichier xls
    http://leon.baz.free.fr/1.xls

  9. #9
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 737
    Points
    11 737
    Par défaut
    Le plus approchant que tu peux avoir est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT nom_projet, nature, id_utilisateur, SUM( nb_heures ) AS nb_heures
    ...
    GROUP BY nom_projet, nature, id_utilisateur WITH ROLLUP

Discussions similaires

  1. grouper résultats de 2 requêtes
    Par astrolane dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 21/12/2010, 15h43
  2. [MySQL] Grouper résultats ensemble
    Par masseur dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 11/12/2006, 11h05
  3. Réponses: 2
    Dernier message: 26/07/2006, 14h52
  4. Grouper et concatener des résultats
    Par Koo dans le forum Langage SQL
    Réponses: 3
    Dernier message: 07/07/2004, 10h09
  5. [CR8.5] Grouper des subreports ensembles
    Par liberio dans le forum SAP Crystal Reports
    Réponses: 8
    Dernier message: 08/06/2004, 01h44

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