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 :

retracer des données par mois


Sujet :

Requêtes MySQL

  1. #1
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut retracer des données par mois
    Bonjour,

    Je me casse la tête depuis plusieurs jours sur le problème suivant :

    Prenons une table employe(id,nom,prenom)
    une table prime(id,id_employe,type,montant,debut,fin)

    Debut et fin vont varier joyeusement et correspondre à des périodes de validité. Le type de primes également est très varié.

    Je voudrais faire une vue qui rétablit l'année par mensualité, pour préparer un tableau html. J'aurais préféré traiter cela dès le sql plutôt qu'en PHP.
    Du genre

    DUPONT/Jean/Prime A/ montant Janvier/ montant Février/ montant mars.... / montant décembre
    DUPONT/Jean/Prime B/ montant Janvier/ montant Février/ montant Mars.... / montant décembre
    MARTIN/Jeanne/Prime B/ montant Janvier/ montant Février/ montant Mars.... / montant décembre
    WATSON/James/Prime A/ montant Janvier/ montant Février/ montant Mars.... / montant décembre
    WATSON/James/Prime F/ montant Janvier/ montant Février/ montant Mars.... / montant décembre

    voici où j'en suis de mes... tentatives infructueuses :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    select distinct employe.nom,employe.prenom,prime.type,
        sum(case when "2011-01-27" between prime.debut and prime.fin then prime.montant else 0 end) as montant_01,
        sum(case when "2011-02-27" between prime.debut and prime.fin then prime.montant else 0 end) as montant_02,
     etc...
        sum(case when "2011-12-27" between prime.debut and prime.fin then prime.montant else 0 end) as montant_12
    from employe,prime
    where prime.id_employe=employe.id
    group by prime.id_employe,prime.type
    order by nom,prenom,field(prime.type,"C","A","B","F")
    En gros, les sommes ne sont jamais les bonnes.
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Bonjour,

    A quoi sert votre distinct sachant que vous faites un group by ?

    Sinon pour le problème initiale, pouvez-vous donner un exemple de donnée ?

    Je suspect que votre problème réside dans votre test case / when, qui doit reprendre pour différent mois une prime.

  3. #3
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Merci de votre réponse.
    J'ai fini par trouver d'où venait le problème,il venait d'une jointure avec une troisième table, qui étant mal calée, renvoyait parfois deux valeurs, et sommait donc deux fois...
    Pardon pour le dérangement.
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

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

Discussions similaires

  1. [XL-2010] Afficher des données par rapport à une liste de mois
    Par Lepetitlezard51 dans le forum Excel
    Réponses: 5
    Dernier message: 05/12/2014, 23h36
  2. [MySQL] récupérer des données par mois
    Par michelkey dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 22/11/2008, 18h19
  3. [Tableaux] Affichage des données par lot
    Par randriarabe dans le forum Langage
    Réponses: 1
    Dernier message: 07/12/2005, 08h23
  4. Récupérer des données par LDAP
    Par wil4linux dans le forum ASP
    Réponses: 3
    Dernier message: 14/09/2005, 12h11
  5. envoyer des données par l'intermédiaire d'un bouton
    Par mathilde50 dans le forum Access
    Réponses: 26
    Dernier message: 28/10/2004, 16h49

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