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 :

[MySQL] requete avec cumul mois par mois


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 162
    Points : 71
    Points
    71
    Par défaut [MySQL] requete avec cumul mois par mois
    Bonjour à tous,

    Je vous explique mon probleme ... J'ai une table qui stocke à chaque fois qu'une action sur un type d'objet est effectué dans mon appli. C'est en fait une sorte de fichier de log. J'ai donc une table log qui contient codeLog, dateLog, idObjet.

    codeLog : clé primaire de ma table, qui s'incrémente.
    dateLog : date à laquelle le log est enregistré
    idObjet : sur quel objet précisément l'action est effectué dans l'appli

    J'obtiens donc des informations du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    1;23-02-2004;2
    2;16-05-2005;4
    .../...
    Et ce que j'aimerais, c'est obtenir pour chaque objet sur une période donné de quelques mois, le nombre de fois que chaque objet est loggé dans la table.
    Obtenir par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    2;9/2004;10
    2;10/2004;12
    2;11/2004;4
    3;9/2004;5
    3;10/2004;8
    3;11/2004;6
    J'ai réussi a faire cette requete. Mais j'ai un probleme ... C'est que dans le cas ou je n'ai pas de log pour l'objet x pour Septembre 2004, par exemple, je n'ai aps de ligne qui s'affiche .... Et ca me pose probleme dans mes traitements ... J'aimerais dans le cas ou je n'ai rien pour tel mois, avoir une ligne du genre :
    J'ai bien essayé avec une osus-requete qui récupérait les mois, puis qui se connectait avec une jointure idoine, mais ca marche pas mieux ...

    Pourriez vous me donner un coup de main la dessus ?

    merci d'avance

  2. #2
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Pour faire cela, il te faut une table des mois sur laquelle tu fais une jointure externe.

  3. #3
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 162
    Points : 71
    Points
    71
    Par défaut
    Ben j'ai bien essayé ... Mais ca ne fonctionne pas ... Parce que pour un mois donné, j'ai forcément un objet qui correspond, le mois ne va donc pas s'afficher à 0 pour un autre objet qui ne contient pas de log pour ce mois ...

  4. #4
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Pour avoir tous les mois et tous les objets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT m.mois, o.IdObject, count(j.id) 
    FROM Mois m CROSS JOIN Object o
                LEFT  JOIN Journal j ON m.Mois = j.Mois AND o.IdObject = j.IdObject
    GROUP BY m.Mois, o.IdObject.

  5. #5
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 162
    Points : 71
    Points
    71
    Par défaut
    Merci pour ton aide !!

    Mais ce qui m'embete beaucoup dans ta requete, c'est qu'elle implique d'avoir une table des mois/Année .... Moi, je pensais pouvoir récupérer ces informations à partir de ma table de log ...

  6. #6
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Ton moteur ne pourra pas inventer des informations qui n'existent pas, il faut bien qu'ils les trouvent quelque part.
    Si ta table Journal n'est pas trop grosse, tu peux remplacer Mois par (SELECT DISTINCT Mois FROM Journal) dans la requête. Mais les mois ou il n'y a eu aucun log n'apparaîtront pas (sans doute pas grave).

Discussions similaires

  1. [VxiR2] Du 12 mois flottant mois par mois?
    Par EmmanuelleC dans le forum Designer
    Réponses: 4
    Dernier message: 13/04/2011, 12h01
  2. Résultat de requete en colonne (mois par mois)
    Par lodan dans le forum Requêtes
    Réponses: 11
    Dernier message: 13/02/2008, 18h53
  3. Requete avec cumul par semaine
    Par Fleur-Anne.Blain dans le forum Langage SQL
    Réponses: 4
    Dernier message: 16/07/2007, 15h24
  4. cumul vente par mois et par année
    Par christopheS dans le forum Access
    Réponses: 4
    Dernier message: 03/10/2006, 15h01
  5. [MySQL] Requête ordonnant les résultats par mois
    Par DukyGeorge dans le forum Langage SQL
    Réponses: 12
    Dernier message: 15/05/2006, 19h48

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