Partage
  • Partager sur Facebook
  • Partager sur Twitter

requete multitable SUM qui retourne rien

marcher bien marche plus!!

Sujet résolu
    8 avril 2011 à 12:25:39

    Bonjour les zéros,

    Suite a un sujet précédant j'ai decouvert les pseudo Conditions dans SQL.

    L'objectif attendu de cette requete

    Tout simplement dans mon administration j'ai une partie alerte et cette requete me permettra de d'afficher le nombre d'alerte par categories.

    j'utilise:

    Mysql
    Codeingniter

    mes tables avec les champs concernés:

    siteinternet
    validation -> type enum('actif','attente')
    typeengagement-> type enum('annuaire','mastercompte')

    note
    dateNote -> type date

    commentaire_news
    verifier -> type bolean(tinyint)

    commentaire_site
    verifier -> type bolean(tinyint)

    Maintenant, ma requete car j'ai bosser quand meme



    Celle-ci ne me retourne aucune erreur


    SELECT SUM(CASE WHEN siteinternet.validation="attente"
               THEN 1 ELSE 0 END)
           AS
           siteAttenteValidation,
    
           SUM(CASE WHEN siteinternet.typeengagement="annuaire"
                     AND
                         siteinternet.validation="actif"
                     AND
                         siteinternet.idsiteInternet=note.siteInternet_idsiteInternet
                     AND
                         note.dateNote>"'.date('Y/m/d', strtotime('-11 month')).'"
               THEN 1 ELSE 0 END)
           AS
           annuairenb,
    
           SUM(CASE WHEN siteinternet.typeengagement="mastercompte"
                     AND
                         siteinternet.validation="actif"
                     AND
                         siteinternet.idsiteInternet=note.siteInternet_idsiteInternet
                     AND
                         note.dateNote>"'.date('Y/m/d', strtotime('-2 month')).'"
               THEN 1 ELSE 0 END)
           AS
           mastercomptenb,
    
           SUM(CASE WHEN commentaire_news.verifier=0
               THEN 1 ELSE 0 END)
           AS
           commentnewsVerifier,
    
           SUM(CASE WHEN commentaire_site.verifier=0
               THEN 1 ELSE 0 END)
           AS
           commentsiteVerifier,
    
           SUM(CASE WHEN commentaire_news.Alerte=1
               THEN 1 ELSE 0 END)
           AS
           commentnewsAlerte,
    
           SUM(CASE WHEN commentaire_site.Alerte=1
               THEN 1 ELSE 0 END)
           AS
           commentsiteAlerte
    
    FROM
        siteinternet,note,commentaire_news,commentaire_site
    


    Mon traitement en php!
    Mon probleme pourrait venir de la mais j'en doute!

    <?php
    if ($requete->num_rows() > 0)
                    {
                        foreach ($requete->result() as $row)
                       {
                           echo $siteAttenteValidation = $row->siteAttenteValidation;
                           echo $siteAttenteControle = $row->mastercomptenb+$row->annuairenb;
                           echo $commentVerifier = $row->commentnewsVerifier+$row->commentsiteVerifier;
                           echo $commentAlerte = $row->commentnewsAlerte+$row->commentsiteAlerte;
                       }
                    }
    
                 return array('siteAttenteValidation'=>$siteAttenteValidation,
                              'siteAttenteControle'=>$siteAttenteControle,
                              'commentVerifier'=>$commentVerifier,
                              'commentAlerte'=>$commentAlerte);
    


    ce que me retourne mon traitement


    array
      'siteAttenteValidation' => null
      'siteAttenteControle' => int 0
      'commentVerifier' => int 0
      'commentAlerte' => int 0
    


    Maintenant, le problème! en fait, il y en a deux actuellement!


    1) 'siteAttenteValidation' => null

    Il me renvoie null alors que je me serais attendu a avoir 0 de type int est pas un boolean j'ai tenter pas mal de manip mais la javoux que je suis perdu car tout les autres resultat sont de type int.

    J'ai verifier l'orthographe de mes champs voir si tout était correct a ce niveau par deux fois!


    Deuxiéme question cette requete qui est une partie de la requete ci-dessus me renvoie bien 1. alors que dans la requete ci dessus ca me renvoie 0;

    la requete

    SELECT SUM(CASE
               WHEN
                       siteinternet.typeengagement="annuaire"
                    AND
                       siteinternet.validation="actif"
                    AND
                       note.dateNote>"'.date('Y/m/d', strtotime('-1 month')).'"
                   THEN 1
                   ELSE 0
                   END)
              AS
              annuairenb,
    
          SUM(CASE
                    WHEN
                           siteinternet.typeengagement="mastercompte"
                        AND
                           siteinternet.validation="actif"
                        AND
                           note.dateNote>"'.date('Y/m/d', strtotime('-2 month')).'"
                           THEN 1
                           ELSE 0
                          END)
              AS
              mastercomptenb
           FROM
              siteinternet,note
    


    Information complémentaire car je cherche en attendant qu'une ame charitable puisse m'aider! j'ai inserer mais requete directment dans php myadmin et la seconde requete me renvoie bien 0 1 alors que la premiere la longue me renvoie 0 0 0 0 0 0! Franchement la je suis entrain de m'user sur la doc de Mysql mais je trouves pas ce que je fait qui est incorrect.


    merci à ceux qui auront le courage de lire

    Je ne suis pas succeptible si vous pensez que je suis complet a coter de la plaque il faut le dire. Ou si vous auriez employé un autre méthode pareil. Si vous avez un lien pour me debloquer hésité pas!

    je pourrais faire 4 requetes pour obtenir le meme résultat facilement mais j'aimerais faire évolué mon niveau et coder proprement.

    Voila j'ai cree 4 requete idependante j'ai mis le resultat obtenu sous les requetes.
    SELECT SUM(CASE WHEN siteinternet.validation="attente"
               THEN 1 ELSE 0 END)
           AS
           siteAttenteValidation,
    FROM
        siteinternet    
    -->RESUTAT   siteAttenteValidation = 0;<--
    
    SELECT SUM(CASE WHEN siteinternet.typeengagement="annuaire"
                     AND
                         siteinternet.validation="actif"
                     AND
                         siteinternet.idsiteInternet=note.siteInternet_idsiteInternet
                     AND
                         note.dateNote>"'.date('Y/m/d', strtotime('-11 month')).'"
               THEN 1 ELSE 0 END)
           AS
           annuairenb, 
    
           SUM(CASE WHEN siteinternet.typeengagement="mastercompte"
                     AND
                         siteinternet.validation="actif"
                     AND
                         siteinternet.idsiteInternet=note.siteInternet_idsiteInternet
                     AND
                         note.dateNote>"'.date('Y/m/d', strtotime('-2 month')).'"
               THEN 1 ELSE 0 END)
           AS
           mastercomptenb
      FROM
        siteinternet,note              
    -->RESUTAT   annuairenb = 1 et mastercomptenb = 0;<--        
    
    SELECT SUM(CASE WHEN commentaire_news.verifier="0"
               THEN 1 ELSE 0 END)
           AS
           commentnewsVerifier,
    
           SUM(CASE WHEN commentaire_site.verifier="0"
               THEN 1 ELSE 0 END)
           AS
           commentsiteVerifier,
     FROM
    commentaire_news,commentaire_site     
    -->RESUTAT   commentnewsVerifier = 0 et commentnewsVerifier = 0;<-- 
    
    SELECT SUM(CASE WHEN commentaire_news.Alerte="1"
               THEN 1 ELSE 0 END)
           AS
           commentnewsAlerte,
    
           SUM(CASE WHEN commentaire_site.Alerte="1"
               THEN 1 ELSE 0 END)
           AS
           commentsiteAlerte
    
    FROM
    commentaire_news,commentaire_site
    -->RESUTAT   commentnewsAlerte = 0 et commentsiteAlerte = 0;<--
    


    Franchement la je pige ou est mon erreur!!!

    si vous avez une question hésité pas j'ai tenter de de fournir un max d'informations.
    • Partager sur Facebook
    • Partager sur Twitter
      10 avril 2011 à 2:06:45

      Merci pour ton intervention, si tu veux, jette toujours un oeil au "mieux" auquel je suis arrivé (sur mon topic) ;)
      • Partager sur Facebook
      • Partager sur Twitter

      requete multitable SUM qui retourne rien

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown