Page 1 sur 1

count et group by

Posté : 24 avr. 2005, 22:48
par oliwood
Hello !

je cherche à afficher le nombre de contenus vu par mes visiteurs
j'ai 1 table ip_stat_vod dans laquelle j'enregistre l'id du client (table ip_client), l'id du contenu (table ip_contenu) et la date de la visite

$sql = "SELECT 
nom_client,id_numAutoClient, COUNT(*) AS nbr_vu 
FROM ip_stat_vod, ip_client 
GROUP BY id_numAutoClient";

$req=mysql_query($sql);

while($data = mysql_fetch_array($req)) {
$nbr_vu = mysql_result($req,"0","nbr_vu");
echo $nbr_vu;
}
J'ai essayé plusieurs tentatives, une semblait pas trop mal mais seulement avec 1 visiteurs..
merci pour votre aide

A++ OLi

Posté : 25 avr. 2005, 00:07
par Cyrano
Pour fonctionner, une requête avec un agregat (count(*) par exemple) devra comporter dans la clause GROUP BY tous les autres champs, ainsi, la requête est incomplète et devrait être:
$sql = "SELECT
nom_client,id_numAutoClient, COUNT(*) AS nbr_vu
FROM ip_stat_vod, ip_client
GROUP BY id_numAutoClient, nom_client";

Posté : 25 avr. 2005, 00:24
par oliwood
Merci pour ta réponse :D
Mais ça va po mieux... !
Je crois que j'ai un problème dans ma clause while, car avec 1 client dans ma table ça marche, mais dès que j'ai 2 clients il y a une boucle qui se produit et je dois arrêter mon navigateur !! :shock:

Ma table ip_stat_vod ressemble à ça :

IDclient1 | IDcontenu8 | date
IDclient1 | IDcontenu3 | date
IDclient1 | IDcontenu5 | date
IDclient1 | IDcontenu5 | date

ça ça marche car à l'affichage j'ai bien
IDclient1 = 4


ça se gate dès que je rejoute une entrée
IDclient2 | IDcontenu5

Là il boucle... :cry:

Merciii !

Posté : 25 avr. 2005, 00:32
par Cyrano
Là, je cale et ne peux que te renvoyer au manuel MySQL sur la clause GROUP BY, tu y trouveras sûrement aussi rapidement que moi la solution que je ne retrouve pas de tête.