Page 1 sur 2

Utilisation de COUNT [debutant]

Posté : 06 mai 2005, 14:21
par BFH
Bonjour, est ce que quelqu'un pourrait m'expliquer comment utiliser "COUNT"
J'ai cela comme requete:
$query="SELECT DISTINCT IGroup FROM item WHERE ReportID=\"$P\" && IPage=\"Résumé\" ";
$result=mysql_query($query)or die (mysql_error());
$row=mysql_fetch_assoc($result);
		
$query1="SELECT COUNT(DISTINCT IGroup) FROM item WHERE ReportID=\"$P\" && IPage=\"Résumé\" ";//est ce c'est juste?
$result1=mysql_query($query1)or die (mysql_error());// je voudrais recuperer le nombre d'occurences de IGroup
$row1=mysql_fetch_assoc($result1);//et stocker cette valeur dans une variable
echo $row1;

$R=$row['IGroup'];
$query2="SELECT IField,IValue FROM item WHERE ReportID=\"$P\" && IPage=\"Résumé\" && IGroup='".$R."' ";		
$result2=mysql_query($query2)or die (mysql_error());
$row2=mysql_fetch_assoc($result2);

Posté : 06 mai 2005, 14:27
par seayoung
dans mes souvenir la fonction count te permet de conter le nombre d element dans un tableau.
donc en gros tu peux l utiliser de plussieurs façons:
$val=count($tableau);
ou dans un if ou for
for ($i=0;$i<count($tableau);$i++)
{}
voila .

Posté : 06 mai 2005, 14:32
par Cyrano
Tu ne peux pas faire un COUNT (DISTINCT), enfin je ne crois pas. Par contre, tu peux faire un SELECT DISTINCT, mettre le résultat dans un tableau PHP et utiliser comme vient de le mettre seayoung un count($tableau_resultat)

Posté : 06 mai 2005, 14:35
par seayoung
afirmatif un count distinct pas paussible.
SELECT DISTINCT paussible :p

Posté : 06 mai 2005, 14:43
par BFH
J'ai voulu faire comme a dit seayoung
$query="SELECT DISTINCT IGroup FROM item WHERE ReportID=\"$P\" && IPage=\"Résumé\" "; 
$result=mysql_query($query)or die (mysql_error()); 
$row=mysql_fetch_assoc($result); 
         
$row1=count($row['IGroup'])
echo $row1; // pour voire combien d'occurrence il trouvait 
Pas de bol, (ça change! :? ) j'obtiens 1 au lieu de 6

Posté : 06 mai 2005, 14:54
par seayoung
mmm sa change pe etre rien du tout mais si tu met:
$row=mysql_fetch_array($result); 
// a la place de 
$row=mysql_fetch_assoc($result); 
et que tu gardes le reste ... ca marche pas ?

Posté : 06 mai 2005, 14:55
par Cyrano
$query="SELECT DISTINCT IGroup FROM item WHERE ReportID=\"$P\" && IPage=\"Résumé\" "; 
$result=mysql_query($query)or die (mysql_error()); 
$row=mysql_fetch_assoc($result); 
         
$row1=count($row)
echo $row1; // pour voire combien d'occurrence il trouvait 
Compte juste le tableau, pas le champ

Posté : 06 mai 2005, 15:05
par BFH
mettre fetch_array au lieu de fetch_assoc me fait passer de 1 à 2 (au lieu de 6 dommage)
mettre $row1=count($row) ne change rien!

Posté : 06 mai 2005, 15:06
par seayoung
oui m*** j avais pas vue lol Bien vu Cyrano
dur de pas faire le pont lol

Posté : 06 mai 2005, 15:09
par Cyrano
On va essayer autre chose:
$query="SELECT DISTINCT IGroup FROM item WHERE ReportID=\"$P\" && IPage=\"Résumé\" ";
$result=mysql_query($query)or die (mysql_error());
$i = 0;
while($row=mysql_fetch_array($result))
{
    $i++;
}
echo($i);
Teste ça

Posté : 06 mai 2005, 15:10
par seayoung
mmm j ai une question bete :
$query="SELECT DISTINCT IGroup FROM item WHERE ReportID=\"$P\" && IPage=\"Résumé\" ";
$result=mysql_query($query)or die (mysql_error());
$row=mysql_fetch_assoc($result);
         
$row1=count($row) //<<manquerait pas un ; par hazard ?
echo $row1; // pour voire combien d'occurrence il trouvait

Posté : 06 mai 2005, 15:15
par Cyrano
J'ai une autre idée qui m'est venu BFH: le champ IGroupe prend ses valeurs où ? est-ce qu'il y a une autre table avec toutes les valeurs possibles sans doublons ? Parce que ça nous aiderait pas mal...

Posté : 06 mai 2005, 15:16
par Ripat
Un COUNT DISTINCT est possible en MySQL.

Code : Tout sélectionner

SELECT COUNT(DISTINCT IGroup) FROM item WHERE ...
Si tu n'as besoin que de ce comptage, il n'est peut-être pas nécessaire de charger un ensemble de résultats dans un tableau par boucle puis de le compter en PHP.

Je pense que tu économiseras du temps et de la mémoire en faisant le comptage directement dans MySQL.

Posté : 06 mai 2005, 15:18
par BFH
Cyrano, encore une fois merci

Seayoung désolé il a sauté avec le copié collé mais même en le mettant ça marche pas

Posté : 06 mai 2005, 15:20
par Cyrano
Un COUNT DISTINCT est possible en MySQL.
J'ignorais completement cette possibilité, c'est pour ça que je cherchais une alternative... :oops:
je vais me cacher