Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1382 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [reglé] Plusieurs requete COUNT ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[reglé] Plusieurs requete COUNT ?

n°1997641
fscalda
Gaaaaaazzzz
Posté le 31-05-2010 à 17:22:24  profilanswer
 

Hello,
 
je cherche à afficher plusieurs résultat de COUNT. Mais je ne vois pas du tout comment.
 
Ci-dessous, j'affiche si VALID = 1 mais j'aimerais aussi pouvoir afficher le resultat si VALID = 2 en même temps, à part reconstruire plusieurs requete, je vois pas.
 

Code :
  1. $req = mysql_query("SELECT COUNT(*) as Count FROM `prospect` WHERE valid ='1' AND operateur = '$operateur' AND date LIKE '%$annee-%$mois-31%' " );
  2.       if ($req)
  3.       {
  4.          $res = mysql_fetch_array($req);
  5. echo "<tr><td>Pour la période  : 31$madate</td>";
  6.     echo '<td>L\' ',$operateur,' à traité</td>';
  7.     echo '<td> '.$res["Count"].' fiche(s)</td></tr>';
  8.       }


 
Merci d'avance.


Message édité par fscalda le 02-06-2010 à 09:32:11
mood
Publicité
Posté le 31-05-2010 à 17:22:24  profilanswer
 

n°1997642
stealth35
Posté le 31-05-2010 à 17:23:56  profilanswer
 

tu enleves valid ='1' et tu fais GROUP BY valid, rajoute les champs dans ton select aussi, essaye d'hab ta requetes dans phpmyadmin


Message édité par stealth35 le 31-05-2010 à 17:24:40
n°1997643
fscalda
Gaaaaaazzzz
Posté le 31-05-2010 à 17:26:19  profilanswer
 

Pfiouuu, toujours aussi rapide stealth35  :lol: Merci je vais testé ça.
 
Allez, je me complique un peu, et si je veux aussi compter le nombre de reponse à un champ nommé question1 ?

n°1997646
fscalda
Gaaaaaazzzz
Posté le 31-05-2010 à 17:29:42  profilanswer
 

hum, je pense qu'a ma derniere question, il va falloir que je construise une varaible non ? Dans le genre $quest01 = oui .... rahhh, fin de journée....

n°1997649
stealth35
Posté le 31-05-2010 à 17:33:32  profilanswer
 

j'ai du mal a voir, comment est ta base, et quelle est le rendu final que tu veux faire ?

n°1997661
fscalda
Gaaaaaazzzz
Posté le 31-05-2010 à 17:52:37  profilanswer
 

En fait, j'ai des listbox pour choisir l'operateur, le mois voire le jour et j'aimerais afficher des stats par mois/jour dedans qui serait :
combien de valid 1
combien de valid 2
combien de valid = '1' AND quest01 = 'oui' AND quest02 = 'non' AND quest05 in ('oui3mois','oui6mois','ouiannee')
 
Et comme je ne connais pas du tout la fonction COUNT  et ses possiblités, je seche ...
 
Normalement, je devrais créer un tableau avec chaque jour, mais bon, j'essaie déjà de le faire pour un jour unique pour comprendre les possibilités de COUNT;


Message édité par fscalda le 31-05-2010 à 17:54:21
n°1997670
stealth35
Posté le 31-05-2010 à 18:46:18  profilanswer
 

tu peux faire des sous requête SELECT dans les COUNT

n°1997672
fscalda
Gaaaaaazzzz
Posté le 31-05-2010 à 18:59:34  profilanswer
 

je tentais actuellement ça :  

Code :
  1. select sum(case when valid = 0 then 1 else 0 end) pasok, sum(case when valid = 1 then 1 else 0 end) ok from prospect


 
Ca commence à venir, je vais me pauser, et je retente la suite demain.  
 
Par contre, pour créer des sous requetes, est ce que je peux ecrire comme cela :
 

Code :
  1. $req01 = mysql_query("SELECT COUNT(*) as Count FROM `prospect` WHERE operateur = '$operateur' AND date LIKE '%$annee-%$mois-31%'  " );
  2. $req02 = mysql_query("SELECT COUNT(*) as Count FROM `prospect` WHERE operateur = '$operateur' AND date LIKE '%$annee-%$mois-31%'  " );
  3. $req03 = mysql_query("SELECT COUNT(*) as Count FROM `prospect` WHERE operateur = '$operateur' AND date LIKE '%$annee-%$mois-31%'  " );

n°1997775
fscalda
Gaaaaaazzzz
Posté le 01-06-2010 à 09:28:01  profilanswer
 

Bon, j'avance, mais c'est comment dire, un foutoir !!!
 

Code :
  1. $req = mysql_query("SELECT COUNT(*) as Count FROM `prospect` WHERE operateur = '$operateur' AND date LIKE '%$annee-%$mois-31%'  AND valid ='1' " );
  2.       if ($req)
  3.       {
  4.          $res = mysql_fetch_array($req);
  5. echo "<tr><td> 31$madate</td>";
  6.     echo '<td> ',$operateur,' </td>';
  7.     echo '<td> '.$res["Count"].' </td>';
  8.       }
  9.  
  10. // total pas valide 2  
  11. $req = mysql_query("SELECT COUNT(*) as Count FROM `prospect` WHERE operateur = '$operateur' AND date LIKE '%$annee-%$mois-31%' AND valid ='2' " );
  12.       if ($req)
  13.       {
  14.          $res = mysql_fetch_array($req);
  15.     echo '<td> '.$res["Count"].' </td>';
  16.       }
  17. // total   
  18.    $req = mysql_query("SELECT COUNT(*) as Count FROM `prospect` WHERE operateur = '$operateur' AND date LIKE '%$annee-%$mois-31%' AND valid = '1' AND quest01 = 'oui' AND quest02 = 'oui' AND quest03 = 'oui' " );
  19.       if ($req)
  20.       {
  21.          $res = mysql_fetch_array($req);
  22.     echo '<td> '.$res["Count"].' </td>';
  23.       }


 
Il doit y avoir moyen de simplifier, mais je ne vois pas encore comment.

n°1997796
stealth35
Posté le 01-06-2010 à 09:54:29  profilanswer
 

le probleme c'est que y'a pas de logique, mais tu pourrais faire version barbare

 
Code :
  1. SELECT
  2. (SELECT COUNT(*) AS Count FROM `prospect` WHERE operateur = '$operateur' AND date LIKE '%$annee-%$mois-31%'  AND valid ='1') AS champs1,
  3. (SELECT COUNT(*) AS Count FROM `prospect` WHERE operateur = '$operateur' AND date LIKE '%$annee-%$mois-31%' AND valid ='2' ) AS champs2,
  4. (SELECT COUNT(*) AS Count FROM `prospect` WHERE operateur = '$operateur' AND date LIKE '%$annee-%$mois-31%' AND valid = '1' AND quest01 = 'oui' AND quest02 = 'oui' AND quest03 = 'oui' ) AS champs3
 


sinon au niveaux de la date ca serai mieux de faire des comparaison avec le type DATE et pour ton valid si c'est du type INT pas besoin de quote ;)

  


Message édité par stealth35 le 01-06-2010 à 09:56:03
mood
Publicité
Posté le 01-06-2010 à 09:54:29  profilanswer
 

n°1997801
fscalda
Gaaaaaazzzz
Posté le 01-06-2010 à 10:01:30  profilanswer
 

Merci, je vais tester.
Pour mon champ valid, il est de style tinyint, ça marche ?.
 
Dans tout les cas, merci beaucoup !

n°1997805
stealth35
Posté le 01-06-2010 à 10:04:36  profilanswer
 

ouai c'est pareil ;),  pour les paramètre COUNT le *, mais plutôt la clé primaire dedans

n°1997823
fscalda
Gaaaaaazzzz
Posté le 01-06-2010 à 10:27:44  profilanswer
 

Avec ton code, ça fonctionne nickel et je m'y retrouve.
 

Code :
  1. $requete="SELECT
  2.       (SELECT COUNT(*) AS Count FROM `prospect` WHERE operateur = '$operateur' AND date LIKE '%$annee-%$mois-31%'  AND valid ='1') AS champs1,
  3.       (SELECT COUNT(*) AS Count FROM `prospect` WHERE operateur = '$operateur' AND date LIKE '%$annee-%$mois-31%' AND valid ='2' ) AS champs2,
  4.       (SELECT COUNT(*) AS Count FROM `prospect` WHERE operateur = '$operateur' AND date LIKE '%$annee-%$mois-31%' AND valid = '1' AND quest01 = 'oui' AND quest02 = 'oui' AND quest03 = 'oui' ) AS champs3" ;
  5. $resultat = mysql_query($requete);
  6. $ligne = mysql_fetch_object($resultat);
  7. echo $ligne->CHAMPS1;      
  8.  
  9.    echo $ligne->champs1;
  10.   echo $ligne->champs2 ;
  11.   echo $ligne->champs3 ;


 
Juste une dernier chose, je n'arrive pas à mettre le resultat de champs1 dans un <td>, je ne vois pas ou on insére la balise, j'ai tenté :
 

Code :
  1. echo '<td> echo $ligne->champs1</td>';


 

n°1997828
fscalda
Gaaaaaazzzz
Posté le 01-06-2010 à 10:30:56  profilanswer
 

J'ai rien dit, un simple  
 

Code :
  1. echo "<tr><td> $ligne->champs1 </td>";

fonctionne  :D  
 
Je rajoute la clé primaire ID, merci beaucoup !!!!!

n°1997832
stealth35
Posté le 01-06-2010 à 10:33:25  profilanswer
 

t'es sur de ca : %$annee-%$mois-31%,   tout les mois non pas un 31 , t u veux juste récupérer le dernier jour d'un mois suivant une année ?


Message édité par stealth35 le 01-06-2010 à 10:38:01
n°1997894
fscalda
Gaaaaaazzzz
Posté le 01-06-2010 à 11:57:49  profilanswer
 

Oui,oui  :D  en fait, ma listbox envoi ma variable annee + mois, et je récupere le 31. J'ai fait pareil pour le 30 etc, j'aurais du faire un boucle mais bon, je me suis pris la tête avec les dates.
Je sais qu'une grosse requête vaut mieux que 50 petites ...


Message édité par fscalda le 01-06-2010 à 12:05:20
n°1997933
stealth35
Posté le 01-06-2010 à 13:30:20  profilanswer
 

ta une fonction LAST_DAY en mysql, ta juste a tester avec $annee-$mois-01   (le 1er jour du mois etant toujours le 1 contrairement au dernier jour)

n°1998230
fscalda
Gaaaaaazzzz
Posté le 02-06-2010 à 09:31:26  profilanswer
 

J'ai regardé, mais c'est confu... il aurait fallu que je fasse une boucle pour afficher tout les jours du mois dans un tableau. Mais bon, la ça marche, et en plus, ça ne sera utiliser normalement qu'une fois par mois...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [reglé] Plusieurs requete COUNT ?

 

Sujets relatifs
[RESOLU][MySQL] requete toute simpleréutiliser un alias dans une même requête
Checkbox sous Excel (Simple requête )[MySQL] Sous requete
Problème de requête de calculs de moyennesRequete Access avec paramètres, éxécutée en VB .Net
[VBA/EXcel] Faire plusieurs Tableaux croisés Dyn.Requete COUNT par menu deroulant.
requete sur plusieurs bases [resolu] 
Plus de sujets relatifs à : [reglé] Plusieurs requete COUNT ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR