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 :

Affichage de tous les mois


Sujet :

Langage SQL

  1. #21
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    désolé j'ai toujours rien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT mois.idmois,mois.moi ..... ,sum(m) ,COALESCE(sum(m),0)
    						FROM `conteneur` 
    						RIGHT OUTER JOIN mois 
    						ON  MONTH(datedec) = mois.idmois 
    						GROUP BY Année,Mois, idmois
    						ORDER BY idmois ASC
    j'ai pris comme exemple une seule colonne sum(m) !!!
    le champs m dans la BDD est de type mediumint UNSIGNED NULL:non

  2. #22
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    Salam ; le champs m contiens dans la BDD la valeur 0 , zéro n'est pas considéré comme null dans mysql , donc le résultat de 0+0+0...= 0
    normalement j'ai un affichage de zéro par défaut dans ma page affi.php.

  3. #23
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    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 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Effectivement, Une somme donnera toujours au moins 0.

    Mais comment affiches-tu le résultat de la requête en PHP ?

    Fais un echo de ta requête avant envoi au serveur pour la vérifier. Notamment, dans la requête raccourcie que tu donnes dans ton avant dernier message, tu n'as pas mis d'alias à la somme. Il est alors difficile de récupérer le résultat.

    Teste la requête d'abord dans PHPMyAdmin.
    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 !

  4. #24
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    Salam ; retard faute de connexion
    Teste la requête d'abord dans PHPMyAdmin.
    le résultat retourne NULL a la place des zeros !!!!
    Mais comment affiches-tu le résultat de la requête en PHP ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ........
    <td class="nbcas"><?php  echo$list['m'];?></td>
    ..........
    pour l'affichage des zéros j'ai procédé comme suite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ......
    <td class="nbcas"><?php if (!empty($list['m'])) { echo$list['m']; } else echo'0';?></td>
     
    ..........
    sa marche très bien , je veux traité tout ce qui est statistiques avec requête est l'affichage avec php !!!!

  5. #25
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    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 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Affiche ici la requête réellement envoyée au SGBD.
    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 !

  6. #26
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    Code : 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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    ........
    $cbd->exec("SET lc_time_names = 'fr_FR'");
    $tbord=$cbd->prepare(' 
    SELECT mois.idmois,mois.moi ,MONTHNAME(datedec)AS Mois ,MONTH(datedec)AS nummois, YEAR(datedec) AS Année,sum(m)as m,sum(f)as f,sum(m1)as m1,sum(f1)as f1,
    						sum(m2)as m2,sum(f2)as f2,sum(m3)as m3,sum(f3)as f3,sum(m4)as m4,sum(f4)as f4,sum(m5)as m5,sum(f5)as f5,
    						sum(m6)as m6,sum(f6)as f6,sum(m7)as m7,sum(f7)as f7,sum(m8)as m8,sum(f8)as f8,
    						(sum(m)+sum(m1)+sum(m2)+sum(m3)+sum(m4)+sum(m5)+sum(m6)+sum(m7)+sum(m8)) As Total_M ,
    						(sum(f)+sum(f1)+sum(f2)+sum(f3)+sum(f4)+sum(f5)+sum(f6)+sum(f7)+sum(f8)) As Total_F ,
    						 (sum(m)+sum(m1)+sum(m2)+sum(m3)+sum(m4)+sum(m5)+sum(m6)+sum(m7)+sum(m8)+sum(f)+sum(f1)+
    						 sum(f2)+sum(f3)+sum(f4)+sum(f5)+sum(f6)+sum(f7)+sum(f8)) AS Total ,COALESCE(sum(m),0)
    						FROM `conteneur` 
    						RIGHT OUTER JOIN mois 
    						ON  MONTH(datedec) = mois.idmois 
    						GROUP BY Année,Mois, idmois
    						ORDER BY idmois ASC');
    try {
    					// On envois la requète
    					$tbord->bindParam(':an', $_POST['an'] , PDO::PARAM_INT); 
    					$tbord->execute();
    					// On récupère en 1er toutes les données
    					$datalist = $tbord->fetchAll(PDO::FETCH_ASSOC);
    						// libèré la connexion du serveur
    					$tbord->closeCursor();	
     
    			  //print_r ($datacom); //verrification du résultat
    			  }
    catch( Exception $e ){
    			  echo 'Erreur d\'affichage : ', $e->getMessage();
    			  }
    				/*----------------- fin affichage */
    }
     
     
    // affichage de données 
    <td class="nbcas"><?php  echo$list['m']; 	?></td>
    .........

  7. #27
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    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 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Commençons par récrire la requête pour la rendre plus lisible et profitons-en pour y ajouter des alias, bonne habitude à prendre dès qu'il y a plus d'une table :
    Code : 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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    SELECT mois.idmois, 
    	mois.moi ,
    	MONTHNAME(c.datedec)AS Mois,
    	MONTH(c.datedec)AS nummois, 
    	YEAR(c.datedec) AS Année,
    	sum(c.m)as m,
    	sum(c.f)as f,
    	sum(c.m1)as m1,
    	sum(c.f1)as f1,
    	sum(c.m2)as m2,
    	sum(c.f2)as f2,
    	sum(c.m3)as m3,
    	sum(c.f3)as f3,
    	sum(c.m4)as m4,
    	sum(c.f4)as f4,
    	sum(c.m5)as m5,
    	sum(c.f5)as f5,
    	sum(c.m6)as m6,
    	sum(c.f6)as f6,
    	sum(c.m7)as m7,
    	sum(c.f7)as f7,
    	sum(c.m8)as m8,
    	sum(c.f8)as f8,
    	(sum(c.m) + sum(c.m1) + sum(c.m2) + sum(c.m3) + sum(c.m4) + sum(c.m5) + sum(c.m6) + sum(c.m7) + sum(c.m8)) As Total_M,
    	(sum(c.f) + sum(c.f1) + sum(c.f2) + sum(c.f3) + sum(c.f4) + sum(c.f5) + sum(c.f6) + sum(c.f7) + sum(c.f8)) As Total_F,
    	(sum(c.m) + sum(c.m1) + sum(c.m2) + sum(c.m3) + sum(c.m4) + sum(c.m5) + sum(c.m6) + sum(c.m7) + sum(c.m8) 
    		+ sum(c.f) + sum(c.f1) + sum(c.f2) + sum(c.f3) + sum(c.f4) + sum(c.f5) + sum(c.f6) + sum(c.f7) + sum(c.f8)) AS Total,
    	COALESCE(sum(c.m),0) AS m_non_null
    FROM conteneur c
    RIGHT OUTER JOIN mois m ON  MONTH(c.datedec) = m.idmois 
    GROUP BY YEAR(c.datedec), 
    	MONTHNAME(c.datedec),
    	m.idmois,
    	MONTH(c.datedec)
    ORDER BY m.idmois ASC
    1) Il manquait du monde dans le GROUP BY puisque toutes les colonnes ne faisant pas l'objet d'une fonction de regroupement doivent se trouver dans le GROUP BY. Un autre SGBD que le trop permissif MySQL aurait refusé cette requête.
    => Voir le contenu du GROUP BY dans ma requête récrite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    GROUP BY YEAR(c.datedec), 
    	MONTHNAME(c.datedec),
    	m.idmois,
    	MONTH(c.datedec)

    2)
    le résultat retourne NULL a la place des zeros !!!!
    Pour toutes les colonnes de SUM ou seulement pour le COALESCE ?

    J'avais dit de mettre un alias sur le COALESCE, je l'ai ajouté dans ma requête.

    3) Dans ton code PHP, tu envoies un paramètre avec la requête alors qu'elle ne contient pas de paramètre !
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $tbord->bindParam(':an', $_POST['an'] , PDO::PARAM_INT); 
    					$tbord->execute();
    C'est peut-être normal que tu n'aies que des zéros, si c'est le cas ?

    Tu essaies aussi d'afficher une variable $list alors qu'elle n'est pas valorisée dans le code !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // affichage de données 
    <td class="nbcas"><?php  echo$list['m']; 	?></td>
    Il faut un peu de rigueur quand on programme !
    Pas étonnant que ça n'affiche rien !
    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 !

  8. #28
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    Re ; excuse pour le retard
    Dans ton code PHP, tu envoies un paramètre avec la requête alors qu'elle ne contient pas de paramètre !
    j'ai enlevé le paramétre dans phpmyadmin pour avoir le fonctionel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    .........
    WHERE YEAR(datedec)=:an
    Pour toutes les colonnes de SUM ou seulement pour le COALESCE ?
    pour tout les résultats des mois qui ne figure pas dans la table conteneur , normalement je doit avoir des zéros.
    C'est peut-être normal que tu n'aies que des zéros, si c'est le cas ?
    justement je veux avoir des zéros a l'affichage.
    Tu essaies aussi d'afficher une variable $list alors qu'elle n'est pas valorisée dans le code !
    il manqué :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php // début affichage
    foreach ($datalist as $list){ 
    ?>
    désolé c'est une erreur de ma part
    je vais testé la requête

  9. #29
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    Re ; j'ai eu un problème avec ta requête au niveau de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    SELECT  mois.idmois, mois.moi ........ // sa bloque
    SELECT m.idmois ,m.moi.... // fallait renommé la table mois par m
    ............
    j'ai toujours l'affichage sous phpmyadmin de NULL au lieu des zeros

  10. #30
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    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 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Il faut mettre COALESCE sur toutes les colonnes de la requête susceptibles d'afficher des NULL.
    Code : 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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    SELECT m.idmois, 
    	m.moi,
    	MONTHNAME(c.datedec)AS Mois,
    	MONTH(c.datedec)AS nummois, 
    	YEAR(c.datedec) AS Année,
    	COALESCE(SUM(c.m), 0) AS m,
    	COALESCE(SUM(c.f), 0) AS f,
    	COALESCE(SUM(c.m1), 0) AS m1,
    	COALESCE(SUM(c.f1), 0) AS f1,
    	COALESCE(SUM(c.m2), 0) AS m2,
    	COALESCE(SUM(c.f2), 0) AS f2,
    	COALESCE(SUM(c.m3), 0) AS m3,
    	COALESCE(SUM(c.f3), 0) AS f3,
    	COALESCE(SUM(c.m4), 0) AS m4,
    	COALESCE(SUM(c.f4), 0) AS f4,
    	COALESCE(SUM(c.m5), 0) AS m5,
    	COALESCE(SUM(c.f5), 0) AS f5,
    	COALESCE(SUM(c.m6), 0) AS m6,
    	COALESCE(SUM(c.f6), 0) AS f6,
    	COALESCE(SUM(c.m7), 0) AS m7,
    	COALESCE(SUM(c.f7), 0) AS f7,
    	COALESCE(SUM(c.m8), 0) AS m8,
    	COALESCE(SUM(c.f8), 0) AS f8,
    	COALESCE((sum(c.m) + sum(c.m1) + sum(c.m2) + sum(c.m3) + sum(c.m4) + sum(c.m5) + sum(c.m6) + sum(c.m7) + sum(c.m8)), 0) AS Total_M,
    	COALESCE((sum(c.f) + sum(c.f1) + sum(c.f2) + sum(c.f3) + sum(c.f4) + sum(c.f5) + sum(c.f6) + sum(c.f7) + sum(c.f8)), 0) AS Total_F,
    	COALESCE((sum(c.m) + sum(c.m1) + sum(c.m2) + sum(c.m3) + sum(c.m4) + sum(c.m5) + sum(c.m6) + sum(c.m7) + sum(c.m8) 
    		+ sum(c.f) + sum(c.f1) + sum(c.f2) + sum(c.f3) + sum(c.f4) + sum(c.f5) + sum(c.f6) + sum(c.f7) + sum(c.f8)), 0) AS Total,
    FROM conteneur c
    RIGHT OUTER JOIN mois m ON  MONTH(c.datedec) = m.idmois 
    GROUP BY YEAR(c.datedec), 
    	MONTHNAME(c.datedec),
    	m.idmois,
    	MONTH(c.datedec)
    ORDER BY m.idmois ASC
    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 !

  11. #31
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    Re ; merci pour ta patience pour résoudre ce problème
    maintenant j'ai le bon résultat.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    ...AS Total // ici faut enlevé la virgule (,) avant FROM sinon sa génère une erreur
    FROM conteneur c
    RIGHT OUTER JOIN mois m ON  MONTH(c.datedec) = m.idmois 
    GROUP BY YEAR(c.datedec), 
    	MONTHNAME(c.datedec),
    	m.idmois,
    	MONTH(c.datedec)
    ORDER BY m.idmois ASC
    j'ai torturé mais j'ai pas su trouvé l'idée d'emplacement du COALESCE.
    l'avantage de la recherche , j'ai appris pas mal de chose
    merci CinePhil

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Affichage de tous les mois courbes
    Par paola2014 dans le forum SSRS
    Réponses: 3
    Dernier message: 11/09/2014, 16h44
  2. [2008R2] Histogramme - Affichage de tous les mois
    Par Melow57 dans le forum SSRS
    Réponses: 1
    Dernier message: 23/06/2014, 11h55
  3. Affichage de tous les mois d'un calendrier
    Par sajodia dans le forum Langage
    Réponses: 4
    Dernier message: 03/03/2011, 14h58
  4. Réponses: 4
    Dernier message: 25/06/2008, 14h57
  5. Réponses: 4
    Dernier message: 31/03/2005, 08h48

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