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

PHP & Base de données Discussion :

group by, inclure les mois retournant 0 count() [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    551
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2005
    Messages : 551
    Points : 260
    Points
    260
    Par défaut group by, inclure les mois retournant 0 count()
    Bonjour,

    Sauriez-vous comment inclure les lignes des mois pour lequel count=0 ?

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT MONTH(jour) as monthStat,count(fk_formation_id) AS countFormation
    FROM `dfc_planning`
    WHERE fk_formation_id=:fk_formation_id
    GROUP BY MONTH(jour)
    ORDER BY MONTH(jour)

    je souahiterais avoir tout le smois, même si pour janvier par exemple il n'y a aucun planning.

    Une idée?

    merci

    Nath

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 101
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 101
    Points : 8 211
    Points
    8 211
    Billets dans le blog
    17
    Par défaut
    Ajouter une table des mois
    Faire une jointure externe entre planning/mois (LEFT|RIGHT OUTER JOIN)

    Peut-être serait-il préférable de gérer cela en PHP.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    551
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2005
    Messages : 551
    Points : 260
    Points
    260
    Par défaut
    merci pour la réponse, mais pas la possibilité d'ajouter une table des mois.

    je suis en train de faire en php, mais c'est laid !

  4. #4
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Vatican

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2004
    Messages : 144
    Points : 238
    Points
    238
    Par défaut
    tu peux contourner le problème :

    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
     
    SELECT 
    COUNT((CASE WHEN MONTH(jour)='01' THEN fk_formation_id ELSE NULL END)) AS 'JANVIER',
    COUNT((CASE WHEN MONTH(jour)='02' THEN fk_formation_id ELSE NULL END)) AS 'FEVRIER',
    COUNT((CASE WHEN MONTH(jour)='03' THEN fk_formation_id ELSE NULL END)) AS 'MARS',
    COUNT((CASE WHEN MONTH(jour)='04' THEN fk_formation_id ELSE NULL END)) AS 'AVRIL',
    COUNT((CASE WHEN MONTH(jour)='05' THEN fk_formation_id ELSE NULL END)) AS 'MAI',
    COUNT((CASE WHEN MONTH(jour)='06' THEN fk_formation_id ELSE NULL END)) AS 'JUIN',
    COUNT((CASE WHEN MONTH(jour)='07' THEN fk_formation_id ELSE NULL END)) AS 'JUILLET',
    COUNT((CASE WHEN MONTH(jour)='08' THEN fk_formation_id ELSE NULL END)) AS 'AOUT',
    COUNT((CASE WHEN MONTH(jour)='09' THEN fk_formation_id ELSE NULL END)) AS 'SEPTEMBRE',
    COUNT((CASE WHEN MONTH(jour)='10' THEN fk_formation_id ELSE NULL END)) AS 'OCTOBRE',
    COUNT((CASE WHEN MONTH(jour)='11' THEN fk_formation_id ELSE NULL END)) AS 'NOVEMBRE',
    COUNT((CASE WHEN MONTH(jour)='12' THEN fk_formation_id ELSE NULL END)) AS 'DECEMBRE'
     
    FROM `dfc_planning`
    WHERE fk_formation_id=:fk_formation_id
    .
    . . Savoir, savoir faire, faire , faire savoir...

  5. #5
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 101
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 101
    Points : 8 211
    Points
    8 211
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par nath-0-0 Voir le message
    merci pour la réponse, mais pas la possibilité d'ajouter une table des mois.

    je suis en train de faire en php, mais c'est laid !
    Sinon tu peux construire une table des mois en faisant une sous-requête dans le FROM.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    551
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2005
    Messages : 551
    Points : 260
    Points
    260
    Par défaut
    super merci bcp pour vos solutions !

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/10/2014, 19h26
  2. group by tous les mois de l'année
    Par ebilel dans le forum Langage SQL
    Réponses: 3
    Dernier message: 03/06/2011, 11h15
  3. Requête GROUP BY inclure les résultats NULL
    Par cantador dans le forum SQL
    Réponses: 14
    Dernier message: 10/10/2008, 08h45
  4. Retourner un count d'element par mois
    Par loganblack dans le forum Langage SQL
    Réponses: 10
    Dernier message: 20/03/2008, 15h17
  5. Afficher les enregistrements si le count() vaut 0
    Par j14z dans le forum Requêtes
    Réponses: 7
    Dernier message: 06/04/2004, 09h51

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